前端之家收集整理的这篇文章主要介绍了
c – OpenCV – 二进制图像中所有非零像素的位置,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在二进制图像(cv :: Mat)中找到所有非零像素的位置?我必须扫描图像中的每个像素,还是有一个可以使用的高级OpenCV
功能?
输出应该是一个点(像素位置)的向量.
例如,这可以在Matlab中完成:
imstats = regionprops(binary_image,'PixelList');
locations = imstats.PixelList;
或者甚至更简单
[x,y] = find(binary_image);
locations = [x,y];
编辑:换句话说,如何在cv :: Mat中找到所有非零元素的坐标?
根据@AbidRahmanK的建议,OpenCV版本2.4.4中有一个
函数cv :: findNonZero.
用法:
cv::Mat binaryImage; // input,binary image
cv::Mat locations; // output,locations of non-zero pixels
cv::findNonZero(binaryImage,locations);
它做这个工作.此功能在OpenCV版本2.4.4中引入(例如,在2.4.2版本中不可用).另外,到目前为止,由于某些原因,NONZero不在文档中.
原文链接:https://www.f2er.com/c/116299.html