HObject与Mat相互转换C++源代码比原来的效率提升至少三倍_mat转hobject,hobject转mat-C++文档类资源-CSDN下载
之前上传过源代码了,全写在main函数中,有些人看代码只看一小部分就下结论说是和别人的一模一样,下面单独提取出来
void rgb3_to_interleaved(HObject ho_ImageRGB, HObject *ho_ImageInterleaved);//关键函数声明
HObject ho_Image, ho_ImageInterleaved, ho_ImageRGB;
// Local control variables
HTuple hv_Pointer, hv_Pointer1, hv_TypeRGB, hv_Width, hv_Height;
HTuple hv_WindowHandle, Width, Height;
HTuple hv_T1, hv_T2, hv_T;
下面是完成HObject转Mat:
ReadImage(&ho_Image, "D:/Desktop/绿牌.jpg");
CountSeconds(&hv_T1);
rgb3_to_interleaved(ho_Image, &ho_ImageInterleaved);
GetImagePointer1(ho_ImageInterleaved, &hv_Pointer, &hv_TypeRGB, &hv_Width, &hv_Height);
GenImageInterleaved(&ho_ImageRGB, hv_Pointer, "bgr", hv_Width / 3, hv_Height, -1,
"byte", 0, 0, 0, 0, -1, 0);
rgb3_to_interleaved(ho_ImageRGB, &ho_ImageInterleaved);
GetImagePointer1(ho_ImageInterleaved, &hv_Pointer1, &hv_TypeRGB, &hv_Width, &hv_Height);
Mat img(hv_Height, hv_Width / 3, CV_8UC3, (uchar*)hv_Pointer1.L());
CountSeconds(&hv_T2);
hv_T = hv_T2 - hv_T1;
cout << hv_T.D() << endl;
下面代码完成Mat 转HObject
Mat img2 = imread("D:\\Desktop\\绿牌.jpg");
imshow("mat2", img2);
HObject hob;
CountSeconds(&hv_T1);
GenImageInterleaved(&hob, (Hlong)img2.data, "bgr", hv_Width / 3, hv_Height, -1,
"byte", 0, 0, 0, 0, -1, 0);
CountSeconds(&hv_T2);
hv_T = hv_T2 - hv_T1;
cout << hv_T.D() << endl;
本人亲测比HObject Mat2HObject(Mat& image)快4倍 比Mat HObject2Mat(HObject Hobj)快7倍
测试环境是大学时买的二手笔记本型号不记得了已经很久没用过了,CPU I7五代低功耗版本
有朋友说转换时间0.6秒,不知道是这两个方法还是HObject Mat2HObject(Mat& image)和Mat HObject2Mat(HObject Hobj)
引用对比:Halcon12 HObject与VC++ OpenCV Mat相互转换_韦德隆东强的博客-CSDN博客_halcon 转mat