OPENCV有关16位图像二值化的问题
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 18:57:15
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优化,那效率更高,完全可以实现你的要求。
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优化,那效率更高,完全可以实现你的要求。