ipp8u* 转成opencv的iplimage*显示

问题的由来:最近学习用英特尔的ipp做图像算法,读取图像的时候可以把opencv的图像转化成Ipp8u的指针,但是我想确认自己是否转换成功了,由于ipp库没有能显示的函数,所以想自己写一个转换成能够显示的格式。问了一堆人,都是答得文不对题,算了还是自己慢慢琢磨吧!下班回来自己在电脑上配置成功后开始摸索。
猜到ippi8u应该和uchar差不多,参照byte* 转换到iplimage*方法由于都是指针干脆转换成iplimage了,刚好查到一种方法先构造指针头,给其填充数据就可以转换成功了。做好方便以后自己使用贴下实验的代码如下:
cv::Mat dst = cv::imread(“d:/original.jpg”,CV_LOAD_IMAGE_GRAYSCALE);

//设置roi
IppiSize roi_size = IppiSize();
roi_size.height = dst.rows;
roi_size.width = dst.cols;

//输出数据
Ipp8u *pSrcImage = NULL;
//输出矩阵跨度
int Src_StepBytes = 0;
pSrcImage = ippiMalloc_8u_C1(dst.cols, dst.rows, &Src_StepBytes);
ippiCopy_8u_C1R((Ipp8u*)dst.data, dst.step[0], pSrcImage, Src_StepBytes, roi_size);

IplImage *pImage = cvCreateImageHeader(cvSize(dst.cols, dst.rows), IPL_DEPTH_8U, 1);
cvSetData(pImage, (uchar*)pSrcImage, Src_StepBytes);

cvNamedWindow("Example",1);
cvShowImage("Example",pImage);

cvWaitKey(0);

cvReleaseImageHeader(&pImage);
cvDestroyWindow("Example");
ippFree(pSrcImage);、
后面释放的时候要注意前面用的是imageheader ,所以后面释放的时候也要用相应的releaseimageheader释放,用释放图像的函数会出错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值