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);会报错。
展开
展开全部
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优化,那效率更高,完全可以实现你的要求。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询