halcon图片格式和opencv的IPLimage格式的转换

2023-12-23 10:18

本文主要是介绍halcon图片格式和opencv的IPLimage格式的转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

halcon图片格式和opencv的IPLimage格式的转换:

halcon转opencv格式:

IplImage* HImageToIplImage(Hobject &Hobj)
{IplImage*   pImage;HTuple     htChannels;char cType[MAX_STRING];Hlong    width,height;width=height=0;//转换图像格式convert_image_type(Hobj,&Hobj,"byte");count_channels(Hobj,&htChannels);if(htChannels[0].I()==1){uchar* ptr;get_image_pointer1(Hobj,(Hlong*)&ptr,cType,&width,&height);pImage=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);for(int i=0;i<height;i++){memcpy(pImage->imageData+pImage->widthStep*i,ptr+width*i,width);}}if(htChannels[0].I()==3){uchar *ptrRed , *ptrGreen , *ptrBlue;ptrRed=ptrGreen=ptrBlue=NULL;get_image_pointer3(Hobj,(Hlong*)&ptrRed,(Hlong*)&ptrGreen,(Hlong*)&ptrBlue,cType,&width,&height);IplImage *pImageRed , *pImageGreen , *pImageBlue ;pImage=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,3);pImageRed=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);pImageGreen=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);pImageBlue=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);for(int i=0;i<height;i++){memcpy(pImageRed->imageData+pImageRed->widthStep*i , ptrRed+width*i , width);memcpy(pImageGreen->imageData+pImageGreen->widthStep*i , ptrGreen+width*i , width);memcpy(pImageBlue->imageData+pImageBlue->widthStep*i , ptrBlue+width*i , width);}cvMerge(pImageBlue,pImageGreen,pImageRed,NULL,pImage);cvReleaseImage(&pImageRed);cvReleaseImage(&pImageGreen);cvReleaseImage(&pImageBlue);}return pImage;
}



opencv 转halcon格式:

Hobject IplImageToHImage(IplImage*  pImage)
{Hobject   Hobj;if(pImage->nChannels==1){int height=pImage->height;int width=pImage->width;uchar *dataGray=new uchar[width*height];for(int i=0; i<height; i++){memcpy(dataGray+width*i, pImage->imageData+pImage->widthStep*i,width);}gen_image1(&Hobj,"byte",pImage->width,pImage->height,(Hlong)(dataGray));delete[ ] dataGray;}if(pImage->nChannels==3){IplImage  *IplImageRed, *IplImageGreen, *IplImageBlue;IplImageRed=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);IplImageGreen=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);IplImageBlue=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);cvSplit(pImage, IplImageBlue, IplImageGreen, IplImageRed,NULL);uchar*  dataRed=new uchar[pImage->width*pImage->height];uchar*  dataGreen=new uchar[pImage->width*pImage->height];uchar*  dataBlue=new uchar[pImage->width*pImage->height];int  height=pImage->height;int  width=pImage->width;for(int i=0; i<height; i++){memcpy(dataRed+width*i, IplImageRed->imageData+IplImageRed->widthStep*i,width);memcpy(dataGreen+width*i, IplImageGreen->imageData+IplImageGreen->widthStep*i,width);memcpy(dataBlue+width*i, IplImageBlue->imageData+IplImageBlue->widthStep*i,width);}gen_image3(&Hobj,"byte",pImage->width,pImage->height,(Hlong)(dataRed),(Hlong)(dataGreen),(Hlong)(dataBlue));cvReleaseImage(&IplImageRed);cvReleaseImage(&IplImageGreen);cvReleaseImage(&IplImageBlue);delete[ ]  dataRed;delete[ ]  dataGreen;delete[ ]  dataBlue;}return Hobj;
}


在halcon转opencv的时候注意,必须为halcon的image格式,halcon的region格式是无法转的。



这篇关于halcon图片格式和opencv的IPLimage格式的转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/527669

相关文章

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.