文章目录

  • 1 字符串与HTuple互转
  • 2 double与HTuple互转
  • 3 Mat 与 HObject互转
  • 4 HObject 转 Mat

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;
}

4 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 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转】相关推荐

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

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

  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. unbuntu18 netplan 配置固定IP
  2. ad取消覆铜_【学院推荐】PCB工程师不得不看:超级实用AD常用快捷键总结
  3. c# DirectoryInfo 类和 FileInfo 类
  4. java当中各种流的应用场景_Java中有哪些流,常用流有哪些并有何特点和使用场景 NIO流,特性及使用时注意的事项 IO与NIO区别...
  5. count 和列不能一起查am_AM-RB 003 会不会让 Aston Martin 变成下一个法拉利?
  6. IDA Pro7.0 使用技巧 总结
  7. MATLAB教程(1) MATLAB 基础知识(1)
  8. E20180404-ts
  9. 大数据系列2-liunx基础-2基本操作
  10. idea环境下lombok插件的安装和使用
  11. 遗传算法python实现求最大值_python 遗传算法求函数极值的实现代码
  12. 从零搭建Pytorch模型教程(一)数据读取
  13. 上偏续关系哈斯图_[离散]哈斯图偏序集--最好理解版本
  14. Springboot的快速入门
  15. 抖音新手常犯的几个雷区,你知道几个?
  16. 基于ListView的滑动删除、添加、修改
  17. 精品软件 推荐 酷我音乐 一个可以下载320k 音质的音乐播放软件
  18. Google云计算原理学习架构图
  19. java基础之接口_繁星漫天_新浪博客
  20. 附近的人实现(Redis 3.2 以上版本和es 性能比较)

热门文章

  1. Android如何计算View的深度
  2. manjaro安装-制作安装U盘
  3. 曾仕强经典语录-《易经的奥秘》
  4. 百家讲坛_我读经典17_《易经》与人生-曾仕强(转)
  5. 第四章 证券投资基金的监管
  6. Rsync守护进程部署和实践
  7. 银行信用卡OCR识别
  8. ES module和commonJS循环引用问题
  9. python数据库-6
  10. Pytorch的22个激活函数