如何在二进制图像(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不在文档中.