3.如何把ptyhon图像格式转化为HImage
python中的图像格式我使用ndarry,是不能直接作为参数传入halcon函数的,会报错。需要先转为HImage对象。
正确的转换效果
测试用原图python ide 引用脚本中的函数,发现 没加偏移量的转换结果。

def converttoHImage(ndArray):
# 把ndArray格式的图像转换成HImage,这是实验下来最兼具速度和内存使用的方法。
# 提取BGR各通道,注意python中ndArray的通道顺序不一样。
imgB = ndArray[0:ndArray.shape[0], 0:ndArray.shape[1], 0]
imgG = ndArray[0:ndArray.shape[0], 0:ndArray.shape[1], 1]
imgR = ndArray[0:ndArray.shape[0], 0:ndArray.shape[1], 2]
# 将BGR通道降维成一维数组
imgBflat = imgB.flatten()
imgGflat = imgG.flatten()
imgRflat = imgR.flatten()
# 生成字节数组内存地址,且有32个地址偏移。
Bbuffer = bytes(imgBflat)
Bptr = id(Bbuffer)
intptrB = IntPtr.Overloads[int](Bptr + 32)
Gbuffer = bytes(imgGflat)
Gptr = id(Gbuffer)
intptrG = IntPtr.Overloads[int](Gptr + 32)
Rbuffer = bytes(imgRflat)
Rptr = id(Rbuffer)
intptrR = IntPtr.Overloads[int](Rptr + 32)
imgSnap = HImage()
# 将三个通道的内存地址传入
imgSnap.GenImage3("byte", ndArray.shape[1], ndArray.shape[0], intptrR, intptrG, intptrB)
return imgSnap以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!