Opencv和Halcon之间有很多数据要转换,特此记录

1 字符串与HTuple互转

char *pImageName = "D:/data/temp.png";
HTuple hv_path;
hv_path = (HTuple)(pImageName);
cout << hv_path.S() << endl;
string path = hv_path.S();
cout << path<<endl;

2 double与HTuple互转

HTuple hv_data;
hv_data = 10.0;
double data = hv_path.D();
cout << data<<endl;

3 Mat 与 HObject互转,这两个项目经常用,代码来自别的博客,非常感谢。

Mat 转 HObject

HObject Cpu_halcon_detect::mat_to_hobject(Mat& image)
{HObject Hobj = HObject();int hgt = image.rows;int wid = image.cols;int i;//  CV_8UC3  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);}GenImage3(&Hobj, "byte", wid, hgt, (Hlong)dataR, (Hlong)dataG, (Hlong)dataB);delete[]dataR;delete[]dataG;delete[]dataB;dataR = NULL;dataG = NULL;dataB = NULL;}//  CV_8UCU1  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);GenImage1(&Hobj, "byte", wid, hgt, (Hlong)data);delete[] data;data = NULL;}return Hobj;
}

HObject 转 Mat

Mat Cpu_halcon_detect::hobject_to_mat(HObject Hobj)
{HTuple htCh = HTuple();HTuple cType;Mat Image;ConvertImageType(Hobj, &Hobj, "byte");CountChannels(Hobj, &htCh);HTuple wid;HTuple hgt;int W, H;if (htCh[0].I() == 1){HTuple ptr;GetImagePointer1(Hobj, &ptr, &cType, &wid, &hgt);W = (Hlong)wid;H = (Hlong)hgt;Image.create(H, W, CV_8UC1);uchar* pdata = (uchar*)ptr[0].I();memcpy(Image.data, pdata, W*H);}else if (htCh[0].I() == 3){HTuple ptrR, ptrG, ptrB;GetImagePointer3(Hobj, &ptrR, &ptrG, &ptrB, &cType, &wid, &hgt);W = (Hlong)wid;H = (Hlong)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[0].I();uchar* pg = (uchar*)ptrG[0].I();uchar* pb = (uchar*)ptrB[0].I();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;
}

halcon还有一个region的数据结构,项目调试时,如果想显示出来,一个方法是直接保存到本地,还有就是可以用region_to_bin函数转为图像image格式,再显示,还有没有更好的方法?

Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转相关推荐

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

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

  2. OpenCV实现Mat与vector,Mat与数组互转

    OpenCV实现Mat与vector互转 [尊重原创,转载请注明出处]https://blog.csdn.net/guyuealian/article/details/80253066 1.Mat与v ...

  3. Java:数值-字符串转换(String转Double)

    代码如下: String ss = "3.141592653"; double value = Double.valueOf(ss.toString());

  4. VC++ CString互转double

    double ddistance = 11.1111;CString strTemp = "";strTemp.Format("%.3f", ddistance ...

  5. android json字符串转成json对象_C++ 两行代码实现json与类对象互转

    背景与需求 之前写C#的时候,解析json字符串一般使用的是开源的类库Newtonsoft.Json,方法十分简洁,比如: class 一行代码就能将json字符串转为相应的类对象. 最近写C++需要 ...

  6. java8时间戳转字符串_从零单排Java 8(2) —— Timestamp、String互转

    Timestamp是Java中少数遗留日期时间对象之一. 本文我们将讨论如何进行 Timestamp和String的互转 由于Timestamp依赖于Java专有格式,我们可以看看,在Java8中,如 ...

  7. c语言英汉互译编程,用C语言编辑简单英汉互译词典.doc

    疥详刁呆害獭荆羞哈沮蒜赫夜内淮牺彻蔼纤凤虹锥硝够唬古进淋牡振拘铅笺元扳与醒靳蹋销钡胶致石衙钦目妈而炸赚鹤邓穷窍瘴笼旬房殆查恨蠢煌沧祥斥瞩骤敌晤屏莲匆目穷妖暗屹码冬息摊挎傍啡坟范给羹哥皱做斋绥甭焕睫苍苫 ...

  8. c语言 判断互质,[经典算法] 找出某数以内与其互质的数

    起因:前几天做了一个这样的题目,感觉自己变成了一个智障,来写写算法: 相关定义: ①质数定义:没有除 '1' 以外的因子的数就是质数.如:1.3.5.7.11等等. ②互质定义:两个数之间除 '1'  ...

  9. linux 手机互传,轻松实现Linux笔记本和手机、PDA互传文件(转)

    轻松实现Linux笔记本和手机.PDA互传文件(转)[@more@]声明:本文适用于FC2,对于其它Linux仅供参考 Linux功能非常强大,只是还有很多功能你不知道!虽然当你的手机放到你的本本的红 ...

最新文章

  1. java list接口为何要重新声明collection接口的方法_JAVA Collection接口中List Map 和Set的区别(转)...
  2. 笔记-中项案例题-2021年上-人力资源管理和沟通管理
  3. linux内核配置usb虚拟串口,Linux USB虚拟串口设备
  4. 背包问题——01背包问题——Charm Bracelet
  5. 多进程使用wikimedia数据训练word2vec模型
  6. python全局变量修改_python中全局变量的修改
  7. spring+ibatis+注解开发
  8. Windows注销后nginx.exe文件仍能继续运行
  9. python中文件的读写方式_Python文件处理之文件写入方式与写缓存(三)
  10. Python urllib HTTP头注入漏洞
  11. wordpress数据字典
  12. 树莓派 Ubuntu 18.04 启动2.4Ghz或5Ghz热点及部分5G信道启动失败解决方法
  13. 百度地图获取经纬度的方式
  14. ENL3010 浪涌电流测试系统
  15. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya
  16. 配置路由urlconf
  17. 操作系统(存储管理)
  18. Arxiv 2022|NoPe-NeRF:优化无位姿先验的神经辐射场
  19. windows7快捷键-好玩的
  20. 【NIPS 2018】完整论文下载链接

热门文章

  1. IT行业工作的就业方向
  2. 大学里不该做的十件事
  3. Scrapy爬取图片网站——最详细的入门爬虫教程,新手入门干货,不进来看一下?
  4. 编程猫python讲师面试_【编程猫工资|编程猫待遇怎么样】-看准网
  5. 排序算法,最全的10大排序算法详解(Sort Algorithm)
  6. docker-machine win10环境搭建及使用(hyperv虚拟机)
  7. 功能测试和自动化测试的优缺点
  8. Hi3518的uboot中播放音频
  9. flowable流程引擎基础概念总结
  10. 关于日期身份证等常用的正则表达式记录