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开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、