IplImage* ImageProcess::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)
{
unsigned char* 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)
{
unsigned char *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 ImageProcess::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 *pImageRed, *pImageGreen, *pImageBlue;
pImageRed=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
pImageGreen=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
pImageBlue=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
cvSplit(pImage, pImageBlue, pImageGreen, pImageRed,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, pImageRed->imageData+pImageRed->widthStep*i,width);
memcpy(dataGreen+width*i, pImageGreen->imageData+pImageGreen->widthStep*i,width);
memcpy(dataBlue+width*i, pImageBlue->imageData+pImageBlue->widthStep*i,width);
}
gen_image3(&Hobj,"byte",pImage->width,pImage->height,(Hlong)(dataRed),(Hlong)(dataGreen),(Hlong)(dataBlue));
cvReleaseImage(&pImageRed);
cvReleaseImage(&pImageGreen);
cvReleaseImage(&pImageBlue);
delete[ ] dataRed;
delete[ ] dataGreen;
delete[ ] dataBlue;
}
return Hobj; }

  主要包括这两个函数

IplImage* HImageToIplImage(Halcon::Hobject &Hobj);
Hobject IplImageToHImage(IplImage* pImage);

Halcon与opencv格式的转换的更多相关文章

  1. [转] 将DOS格式文本文件转换成UNIX格式

    点击此处阅读原文 用途说明 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文 ...

  2. SQL中CONVERT日期不同格式的转换用法

    SQL中CONVERT日期不同格式的转换用法 格式: CONVERT(data_type,expression[,style]) 说明:此样式一般在时间类型(datetime,smalldatetim ...

  3. atitit.标准时间格式 互相转换 秒数 最佳实践

    atitit.标准时间格式 互相转换 秒数 最佳实践 例如00:01:19 转换为秒数  79,,and互相转换 一个思路是使用div 60 mod...不过麻烦的... 更好的方法是使用stamp ...

  4. js字符串的各种格式的转换 ToString,Format

    1.转换钱的格式,仅限int型,float型,double型 double d = 400; d.ToString("C"); //¥400.00 2.10进制数,仅限int型的数 ...

  5. ASP:GB2312格式文本文件转换成UTF-8格式

    '-------------------------------------------------'函数名称:gb2utf_file'作用:利用AdoDb.Stream对象来把GB2312格式文本文 ...

  6. xBIM 格式之间转换

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  7. Unity 数据Json格式的转换

    把对象转换为字节序列的过程称为对象的序列化. 把字节序列化恢复为对象过程称为对象的反序列化. JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用.但是我并没有深入 ...

  8. JavaBean到JSon格式的转换例子的代码

    内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...

  9. TXT电子书格式怎样转换成epub格式

    怎样将TXT电子书格式转换成epub格式呢?因为很多时候不同的阅读器所支持的电子书格式是有所不同,所以电子书格式转换的问题,在生活中也是会经常出现的问题.如果我们需要将TXT电子书格式转换成epub格 ...

随机推荐

  1. 黑马程序员+SQL基础(下)

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...

  2. 配置WCF同时支持WSDL和REST,swaggerwcf生成文档

    配置WCF同时支持WSDL和REST,SwaggerWCF生成文档 VS创建一个WCF工程,通过NuGet添加SwaggerWcf 创建完成后通过 程序包管理控制台 pm>Install-Pac ...

  3. Selenium自动化测试问题

    org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 ...

  4. 每周一书-《Bootstrap基础教程》

    首先说明,本周活动有效时间为8月15日到21日.本周为大家送出的书是有电子工业出版,贺臣/陈鹏编著的<Bootsrap基础教程>,为前端入门必读书籍. 下面是从书中摘录的内容. “ Boo ...

  5. 程序员必须知道的几个Git代码托管平台

    上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...

  6. 基于zepto的移动端日期+时间选择插件

    前段时间写了两个移动端的日期选择插件:轻量级移动端日期选择器,本来是为特定的场景中使用的,结果有同学反应不够灵活和强大.虽然我的看法是移动端的界面要尽可能简洁,功能要尽可能简单,但是难免还是会有各种各 ...

  7. java提高篇(二十)-----集合大家族

          在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的Arra ...

  8. Homebrew简介及安装

    Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案, ...

  9. Duplicate id @+id/imageView, already defined earlier in this layout,android

    原文地址http://www.thinksaas.cn/topics/0/448/448554.html 其實這個訊息也是可以解掉的,當然最簡單的解法就是你不要使用相同的id就好了.不過萬一你是幫別人 ...

  10. CSS3常用属性

    CSS是我们常用的控制网页样式和布局的一种标准. CSS3是最新的CSS标准. CSS3被拆分为"模块",旧的规范也已经拆分为小的块,同时还增加了新的属性. 一些比较重要的CSS3 ...