避免重复编辑同一篇随笔,有问题就开一个新的,哪怕会很短。
还是之前那个问题,halcon中的HObject转换为Bitmap的问题,在全网找相关的办法,三通道图像的HObject转换为C#中的Bitmap。
按照网上写的方法试了一下,有两个目前在用的程序中涉及到这个处理,在一个程序中间或会出现尝试读取或写入受保护的内存的问题;
在另一个程序中百分之百会出现这个问题,出错在将单个通道值写入BitmapData的过程。
比较了出错和不出错的情况,发现HOperatorSet.GetImagePointer3获取到的三通道的HTuple有时候会出现I属性为负数的情况(感觉这个属性表示的是内存地址),这个一看就感觉有问题。
即便在不是负数的情况下,也会出现这个问题,如下图。
全网搜索了一下,三通道图片转换只找到这一种方法,虽然只有这一种方法,但是多余一个人的文章上标着原创,真不知道这个原创是哪里来的,还是说把代码敲一遍贴上去就算是原创了?
网上看到有人遇到过这个问题,但是很遗憾,没有找到解决方案。
有两个怀疑点:
- 图像格式有问题;
- 多线程处理时可能有问题。
我这段代码是在一个事件触发时的处理,说不准和这个有关系。
记录一下在ihalcon中找到的一个人的提问:http://www.ihalcon.com/read-12665.html
这个发布大约在一个月前,虽然问题没有解决,但是说不准以后还会更新呢。
这个问题我大概要放弃了。
估计我会使用保存到本地在重新读取到内存中的方法来绕开这个问题。