大家都会想要把HALCON使用VC编写算法封装成DLL(别人VB, Delphi, C#调用), 所以总结Halcon和VC DLL图像数据怎么传递的。注意各种开发语言处理过程,图像都应转成BMP格式8或24位图像,只有bitmap才可以把像素分解成R, G, B,GRAY四中8位图格式,相信这种处理方式才是标准的和可拓展,即可使用halcon处理,同时可以编写自己的算法。
//建议不要使用halcon自带图像采集算子, 采集图像(Hdevelop开发除外), 最好使用相机供应商提供SDK来开发, 这样程序才可把控,灵活调试。
//1. 头文件定义
unsigned char * PHalconImage ; //全局图像数据变量int Img_width ; //全局变量图像宽
int Img_height ; //全局变量图像宽
//2. VC图像数据传递函数,外部传入图像缓冲数据参数 Imgbuf, 图像宽WIDTH, 图像高WIDTHHAL_PROCESS_API bool Hal_Read_Imagebuf(unsigned char * Imgbuf, int WIDTH, int HEIGHT)
{ try
{ Img_width =WIDTH;
Img_height = HEIGHT;
if ( Imgbuf == NULL ) return false;
if (PHalconImage != NULL)
{ delete [] PHalconImage;
}
PHalconImage = new unsigned char[Img_width * Img_height];
/*注意hancon只处理8位图像, 所以Imgbuf必须是8位的数据图像, (注意24位图像处理需要分解三个8位R ,G, B缓冲区,利用halcon算子gen_image3合成
数据处理方式一样)*/ int i, j;
for (i=0; i< Img_height; i++) {
for (j=0; j< Img_width ; j++) {
PHalconImage[i * Img_width + j ] = Imgbuf[i * Img_width + j]; }
} }
catch(...)
{ return false;
} return true;
}
//3. halcon获取很简单
gen_image1(&Image, "byte", (HTuple)Img_width, (HTuple)Img_height, (long)PHalconImage);
//4. 其它就halcon处理image方式一致
关于VC封装DLL, 图像传递的方法
最新推荐文章于 2021-01-15 17:59:46 发布