开启左侧

halcon序列化和反序列化问题,求大神帮助

[复制链接]
excellentisland 发表于 2019-3-15 11:08:26 | 显示全部楼层 |阅读模式
我的思路是halcon对象(比如HShapeModel)用二进制序列化来保存成某个文件,之后可以随时反序列化读取出来,直接使用,但是在序列化过程中报错了:
异常类型】:HOperatorException
【异常信息】:HALCON error #1301: Wrong value of control parameter: 1 in operator serialize_shape_model
【堆栈调用】:   在 HalconDotNet.HOperatorException.throwOperator(Int32 err, Int32 procIndex)
   在 HalconDotNet.HalconAPI.PostCall(IntPtr proc, Int32 procResult)
   在 HalconDotNet.HShapeModel.SerializeShapeModel()
   在 HalconDotNet.HShapeModel.System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
   在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
   在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
   在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
   在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
   在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)

tystq 发表于 2019-3-15 17:28:35 | 显示全部楼层
要用halcon的序列化方法,下面是一个序列化图像及反序列化图像例子,模板类似
read_image (Image, 'fabrik')
  *序列化图像为句柄
  serialize_image (Image, SerializedItemHandle)
  open_file ('G:/1.dat', 'output_binary', FileHandle)
  *保存序列化图像句柄
  fwrite_serialized_item (FileHandle, SerializedItemHandle)
  close_file (FileHandle)

  open_file ('G:/1.dat', 'input_binary', FileHandle)
  *读取图像反序列化句柄
  fread_serialized_item (FileHandle, SerializedItemHandle1)
  *根据句柄还原图像
  deserialize_image (Image1, SerializedItemHandle1)
  close_file (FileHandle)
 楼主| excellentisland 发表于 2019-3-16 10:36:42 | 显示全部楼层
tystq 发表于 2019-3-15 17:28
要用halcon的序列化方法,下面是一个序列化图像及反序列化图像例子,模板类似
read_image (Image, 'fabrik ...

我补充下,我是把其他的参数(比如数组之类的)和halcon对象一起序列化,而不是单独的halcon对象序列化
tystq 发表于 2019-3-26 10:52:01 | 显示全部楼层
excellentisland 发表于 2019-3-16 10:36
我补充下,我是把其他的参数(比如数组之类的)和halcon对象一起序列化,而不是单独的halcon对象序列化 ...

你序列化代码都没有贴出来,看错误列表serialize_shape_model是halcon序列化方法,如果用C# 本身的二进制方法序列化,应该不会调用该算子序列化,你多半重复序列化了。
jasoncao 发表于 2020-1-2 19:21:07 | 显示全部楼层
HTUPE,和shape model  所有数据都序列化,都是这种方法吗
能否用c#的序列化方法模板等一起全部序列化?
jasoncao 发表于 2020-1-2 21:10:16 | 显示全部楼层
tystq 发表于 2019-3-15 17:28
要用halcon的序列化方法,下面是一个序列化图像及反序列化图像例子,模板类似
read_image (Image, 'fabrik ...

请问,如果用c#序列化方法序列化image 或这 匹配的模板怎么做?
是否serialize_image 转成handle,然后用c#序列化方法序列化。
反序列化时候读取这个句柄,deserialize_serialized 从句柄变成图像?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表