OPENCV有关16位图像二值化的问题

请问一个16位Mat类型的图像m_Img16怎么实现二值化,我用threshold(m_Img16,m_Img16,1000,65535,THRESH_BINARY);会... 请问一个16位Mat类型的图像m_Img16怎么实现二值化,我用threshold(m_Img16, m_Img16, 1000, 65535, THRESH_BINARY);会报错。 展开
 我来答
Hope_vf
2014-07-11
知道答主
回答量:2
采纳率:0%
帮助的人:4.5万
展开全部

THRESH_BINARY类型可以自己写个函数二值化好了,效率一样很高

for( int r = 0; r < m_img16.rows; ++r )
   for( int c = 0; c < m_img16.cols; ++c )
    {
       unsigned short& v = m_img16.at<unsigned short>(r, c);
       v = v >= 1000 ? 65535 : 0;
    }
追问
谢谢你的回答,但是我的图像是1024X1024的分辨率,这种遍历的方法很耗时间,我想达到一个实时图像处理的效果,所以处理时间不能太长。
追答
第一:你有计算这样耗时多少吗?,你实时要求处理的时间是在多少ms内完成呢?看这样确实不符合要求吗?,这时需要实测来检验的。

第二:优化的方法有很多种,比如SSE、AVX优化。效率有4-10倍的提速(具体实测看看)。还有若是设备支持,可以使用GPU优化,那效率更高,完全可以实现你的要求。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式