码迷,mamicode.com
首页 > 其他好文 > 详细

covertTo 和 setTo无法转换mat像素类型

时间:2016-07-12 00:14:36      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:通道   图像像素类型修改   

1.原始问题:

src = imread("**.jpg");
GpuMat srcImg(src);
GpuMat hist;
gpu::calcHist(srcImg,hist)

使用imread载入图像后,

再导入到GpuMat中:

用calcHist处理srcImg时候出现了内存异常。


后来发现是calcHist只能处理CV_8UC1像素类型的图像,但是src的像素不是CV_8UC1。

再尝试使用covertTo和setTo来转换src的像素类型,但是没用成功。

经过调试发现,src的通道是3个。


然后代码修改成以下以后成功:

src = imread("**.jpg",CV_LOAD_IMAGE_GRAYSCALE);
if(src.type != CV_8UC1)
{
    src.covertTo(src,CV_8UC1);
}
GpuMat srcImg(src);
GpuMat hist;
gpu::calcHist(srcImg,hist)

在imread的时候,src存储的就是一张单通道图像。

再使用covertTo转换src的像素类型。

参考:

http://blog.csdn.net/tcm_zhangpeng/article/details/39084103

本文出自 “太阳真圆” 博客,请务必保留此出处http://xuedengfeng.blog.51cto.com/7132939/1825528

covertTo 和 setTo无法转换mat像素类型

标签:通道   图像像素类型修改   

原文地址:http://xuedengfeng.blog.51cto.com/7132939/1825528

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!