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

发布时间:2020-07-11 15:01:10 作者:太阳真圆
来源:网络 阅读:522

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

推荐阅读:
  1. Mysql查看最大连接数和修改最大连接数的讲解
  2. c源程序中能允许出现空语句吗

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

修改 图像 通道

上一篇:linux打开postgresql的方法

下一篇:在python中如何画直线

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》