Halcon与opencv格式的转换
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格式的转换的更多相关文章
- [转] 将DOS格式文本文件转换成UNIX格式
点击此处阅读原文 用途说明 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文 ...
- SQL中CONVERT日期不同格式的转换用法
SQL中CONVERT日期不同格式的转换用法 格式: CONVERT(data_type,expression[,style]) 说明:此样式一般在时间类型(datetime,smalldatetim ...
- atitit.标准时间格式 互相转换 秒数 最佳实践
atitit.标准时间格式 互相转换 秒数 最佳实践 例如00:01:19 转换为秒数 79,,and互相转换 一个思路是使用div 60 mod...不过麻烦的... 更好的方法是使用stamp ...
- js字符串的各种格式的转换 ToString,Format
1.转换钱的格式,仅限int型,float型,double型 double d = 400; d.ToString("C"); //¥400.00 2.10进制数,仅限int型的数 ...
- ASP:GB2312格式文本文件转换成UTF-8格式
'-------------------------------------------------'函数名称:gb2utf_file'作用:利用AdoDb.Stream对象来把GB2312格式文本文 ...
- xBIM 格式之间转换
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- Unity 数据Json格式的转换
把对象转换为字节序列的过程称为对象的序列化. 把字节序列化恢复为对象过程称为对象的反序列化. JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用.但是我并没有深入 ...
- JavaBean到JSon格式的转换例子的代码
内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...
- TXT电子书格式怎样转换成epub格式
怎样将TXT电子书格式转换成epub格式呢?因为很多时候不同的阅读器所支持的电子书格式是有所不同,所以电子书格式转换的问题,在生活中也是会经常出现的问题.如果我们需要将TXT电子书格式转换成epub格 ...
随机推荐
- asp.net identity 2.2.0 在MVC下的角色启用和基本使用(一)
基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 ...
- UWP开发笔记——嵌套式页面的实现
绪论 UWP开发中,Page是最常用的Control之一,通常情况下,在开发的application中,每一个页面就是一个Page.有时候,为了开发整合度更高,UI表现更为一致的UI,开发者需要把UI ...
- 在github上写个人简历——先弄个主页
起因 不知道园友们在使用智联招聘等网站填写简历的时候对要求输入的内容有没有一种无力感,不吐槽了反正就一句话,按照它提供的格式我没法儿写简历,而且面试的时候总会被问道有没有自己作品,哥们儿天天上班,下班 ...
- Ubuntu 下配置Ganglia监控
Ganglia是比较知名的开源监控系统, 运维上需要关注的一些通用的状态都有所涉及.其组成主要是gmond(监控程序),gmetad(信息收集程序),web(监控数据展现app).ubuntu的apt ...
- IOS 公共类-数字处理
1.写一个方法,调用的时候交换两个数的值 -(void) swap:(int*)a andNumber:(int*)b{ int temp = *a; *a = *b; *b = temp; } 调用 ...
- 大叔也说Xamarin~Android篇~ListView里的Click事件并获取本行的其它元素
回到目录 我原创,我贡献,我是仓储大叔 本篇大叔原创,本着对技术的热爱去研究它,把成果分享给国人!大叔始终相信一句话:你只有选择一个感兴趣的工作,你才能更好的发挥你的潜力,而这一切都建立在你不断研究, ...
- 我所了解的chrome
Chrome的隐身模式 先来说说隐身模式的启用方法吧 1.键盘快捷:Ctrl + Shift + N. 2.在Windows7下的任务栏处,右击“Chrome”图标,会出一个下拉菜单,点击“新建隐身窗 ...
- MyBatis学习总结(七)——Mybatis缓存
一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...
- Linux初学 - 解决chkconfig Segmentation fault(core dumped)
yum install *chkconfig*
- 更新日志 - BugHD iOS 客户端上线
中秋.十一长假归来,"满血复活"的我们做了 fir.im 和 BugHD 的优化更新:) BugHD 新增功能 1.iOS 客户端上线 BugHD iOS 客户端上线了,你可以随时 ...