covertTo和setTo无法转换mat像素类型-创新互联
1.原始问题:
创新互联建站从2013年开始,先为蕲春等服务建站,蕲春等地企业,进行企业商务咨询服务。为蕲春企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:covertTo和setTo无法转换mat像素类型-创新互联
文章起源:http://scyanting.com/article/hihgp.html