Hobject是Halcon中的图像格式,Mat是OpenCV中的图像格式,以下是二者的转换

using namespace cv;
using namespace Halcon;//Hobject转Mat
Mat Hobject2Mat(Hobject Hobj)
{HTuple htCh = HTuple();char* cType="";Mat Image;convert_image_type(Hobj, &Hobj, "byte");count_channels(Hobj, &htCh);Hlong wid;Hlong hgt;int W, H;if (htCh[0].I() == 1){Hlong ptr;get_image_pointer1(Hobj, &ptr, cType, &wid, &hgt);W = wid;H = hgt;Image.create(H, W, CV_8UC1);int64 ptrImage;uchar* pdata = (uchar*)ptr;memcpy(Image.data, pdata, W*H);}else if (htCh[0].I() == 3){unsigned char *ptrR = NULL, *ptrG = NULL, *ptrB = NULL;unsigned char* data = NULL;char imgType[128] = { 0 };get_image_pointer3(Hobj, (Hlong*)&ptrR, (Hlong*)&ptrG, (Hlong*)&ptrB, imgType, &wid, &hgt);W = wid;H = hgt;Image.create(H, W, CV_8UC3);vector<Mat> vecM(3);vecM[2].create(H, W, CV_8UC1);vecM[1].create(H, W, CV_8UC1);vecM[0].create(H, W, CV_8UC1);uchar* pr = (uchar*)ptrR;uchar* pg = (uchar*)ptrG;uchar* pb = (uchar*)ptrB;memcpy(vecM[2].data, pr, W*H);memcpy(vecM[1].data, pg, W*H);memcpy(vecM[0].data, pb, W*H);merge(vecM, Image);}return Image;
}//Mat转Hobject
Hobject Mat2Hobject(Mat& image)
{Hobject Hobj = Hobject();int hgt = image.rows;int wid = image.cols;int i;if (image.type() == CV_8UC3){vector<Mat> imgchannel;split(image, imgchannel);Mat imgB = imgchannel[0];Mat imgG = imgchannel[1];Mat imgR = imgchannel[2];uchar* dataR = new uchar[hgt*wid];uchar* dataG = new uchar[hgt*wid];uchar* dataB = new uchar[hgt*wid];for (i = 0; i < hgt; i++){memcpy(dataR + wid*i, imgR.data + imgR.step*i, wid);memcpy(dataG + wid*i, imgG.data + imgG.step*i, wid);memcpy(dataB + wid*i, imgB.data + imgB.step*i, wid);}gen_image3(&Hobj, "byte", wid, hgt, (Hlong)dataR, (Hlong)dataG, (Hlong)dataB);delete[]dataR;delete[]dataG;delete[]dataB;dataR = NULL;dataG = NULL;dataB = NULL;}else if (image.type() == CV_8UC1){uchar* data = new uchar[hgt*wid];for (i = 0; i < hgt; i++)memcpy(data + wid*i, image.data + image.step*i, wid);gen_image1(&Hobj, "byte", wid, hgt, (Hlong)data);delete[] data;data = NULL;}return Hobj;
}

图像处理之Hobject与Mat互转相关推荐

  1. [视觉实战案例]Qt下BYTE、QImage、HObject、Mat等图像格式的转换和图像显示方法

    文章目录 一.图像格式间相互转换 1.BYTE转QImage.HObject和Mat 2.QImage.HObject和Mat的相互转换 二.图像显示方法 1.QLabel显示QPixmap图像 2. ...

  2. bitmap与mat互转方便opencv操作

    bitmap与mat互转方便opencv操作 前言 老实说接下来要说的有点复杂,甚至还有可能不够特别详细.所以哪里有不懂的,可以在这篇博客下留言,我也会及时回复留言和修改这篇博客. 开发工具是andr ...

  3. Dlib学习笔记:dlib array2d与 OpenCV Mat互转

    Dlib学习笔记:dlib array2d与 OpenCV Mat互转 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/7 ...

  4. opencv QImage与Mat 互转 及简单的图像处理

    opencv(mat与qimage 的互转)及简单的图像处理 一.opencv库文件 二.使用方式(Qt) 三.QImage 转 Mat (不太全,多多指教) 四.Mat转 QImage 五.一些简单 ...

  5. opencv获取mat的指针_数字图像处理之opencv中Mat数据操作

    数字图像处理其实就是处理二维矩阵数据.利用opencv来学习处理算法是一种比较好的方式.学习opencv,主要就是调用其中的图像处理函数来实现各种操作.如果要得到想要的处理结果,还需要对图像处理算法有 ...

  6. 【Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转】

    文章目录 1 字符串与HTuple互转 2 double与HTuple互转 3 Mat 与 HObject互转 4 HObject 转 Mat Opencv和Halcon之间有很多数据要转换,特此记录 ...

  7. Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转

    Opencv和Halcon之间有很多数据要转换,特此记录 1 字符串与HTuple互转 char *pImageName = "D:/data/temp.png"; HTuple ...

  8. Halcon12 HObject与VC++ OpenCV Mat相互转换

    网上大多是Halcon10 Hobject的例子,今天终于研究成功,贴出代码,欢迎批评指正 // 转换函数 HObject Mat2HObject(Mat& image) {HObject H ...

  9. opencv各版本 IplImage Mat 转换

    #include <iostream> #include <opencv2/highgui/highgui.hpp> using namespace cv; using nam ...

最新文章

  1. TOP Server教程:预览非标准协议创建的未来
  2. Linux多线程总结
  3. 【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )
  4. 教你从零开始使用wordpress做为后台生成小程序(小白版教程)
  5. PowerDesigner连接SqlServer数据库
  6. 事故通报绝不能一报了事22344
  7. java的decode_Java decode机试题
  8. 东北大学 计算机技术导师,报考东北大学 计算机技术 329分 求调剂相关专业
  9. luogu P2216 [HAOI2007]理想的正方形 递推+ST表
  10. SQL 数据发现和分类
  11. python爬虫案例-乌托家家具公司数据爬取
  12. 用户空间缺页异常pte_handle_fault()分析--(上)
  13. 贝叶斯公式和共轭分布
  14. PCB画板与硬件调试+AD快捷键小技巧
  15. matlab 生成噪声信号
  16. 2021职业技能鉴定2021维修电工证(中级)考试题
  17. c语言从入门到弃坑,从入门到放弃?《全面战争:三国》是怎么让我半小时内弃坑的...
  18. 不属于计算机完成科学特点的是,2019年网络教育统考《计算机应用基础》试卷版练习题2...
  19. MATLAB车辆路径或物流分配或生产调度问题实例设计和代码
  20. 用U盘打造专属个人的微型护航系统--winpe

热门文章

  1. 零基础学电路(一):白噪声电子催眠器电子温度计
  2. 一文带你了解web前端是如何制作表白网站(HTML+CSS+JS)
  3. 计算机用户删除怎么找回,电脑不小心删除的数据怎么找回
  4. [原题复现]HCTF 2018 Warmup
  5. 论文写作-引言怎么写
  6. html 拖放插件,DAD – jQuery拖拽/拖放插件
  7. ps把图片背景变透明
  8. PC机之间串口通信传输文件
  9. 在Linux中重启Tomcat服务器
  10. setcontext