halcon图片格式和opencv的IPLimage格式的转换
来源:互联网 发布:godaddy如何转入域名 编辑:程序博客网 时间:2024/06/05 08:41
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;}
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格式是无法转的。
0 0
- halcon图片格式和opencv的IPLimage格式的转换
- opencv的图象格式IplImage 和CBitmap的转换
- opencv的图象格式IplImage 和CBitmap的转换
- opencv的图象格式IplImage 和CBitmap的转换
- opencv的图象格式IplImage 和CBitmap的转换
- halcon HImage 与opencv 里的 IplImage互相转换
- opencv:bmp和opencv图片格式的转换
- OpenCV - cv::Mat 和 IplImage 的转换
- OpenCV - cv::Mat 和 IplImage 的转换
- OpenCV Mat和IplImage的转换
- OpenCV中IplImage与CvMat等格式间的转换
- 【OpenCV图像处理】IplImage转换灰度图像及Cvmat与IplImage格式之间的相互转换
- OpenCV的Mat和Halcon的HObject类型互相转换
- OpenCV中IplImage和单字节char*的相互转换
- OpenCV中IplImage和单字节char*的相互转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCV IplImage和GDI+ Bitmap的相互转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- C Tricks(四)—— 从数组中随机选择一个元素
- Android自助餐之EventBus框架
- 集合Collection
- 文件读取写入
- EAS KDTable 判断点击的是表头
- halcon图片格式和opencv的IPLimage格式的转换
- HDU 1520 Anniversary party 树形dp 入门
- Android中TextVIew一些属性
- 123sdfdsfdsfsdf
- 轻量web服务器开发日记09-日志文件的实现
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
- hdu 3790 最短路径问题
- 是春哥啊
- C++的一些简单示例(2)