gpt4 book ai didi

c++ - OpenCV:查找二进制 Mat 图像的所有非零坐标

转载 作者:IT老高 更新时间:2023-10-28 21:55:29 24 4
gpt4 key购买 nike

我正在尝试查找二进制图像的非零 (x,y) 坐标。

我发现了一些对函数 countNonZero() 的引用,它只计算非零坐标和 findNonZero() 我不确定如何访问或使用,因为它似乎已从文档中完全删除。

This是我找到的最接近的引用,但仍然没有帮助。如果有任何具体帮助,我将不胜感激。

编辑:- 指定,这是使用C++

最佳答案

Here解释了 findNonZero() 如何保存非零元素。以下代码对于访问 二进制 图像的非零坐标应该很有用。方法 1 在 OpenCV 中使用 findNonZero(),方法 2 检查每个像素以找到非零(正)像素。

方法一:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;

int main(int argc, char** argv) {
Mat img = imread("binary image");
Mat nonZeroCoordinates;
findNonZero(img, nonZeroCoordinates);
for (int i = 0; i < nonZeroCoordinates.total(); i++ ) {
cout << "Zero#" << i << ": " << nonZeroCoordinates.at<Point>(i).x << ", " << nonZeroCoordinates.at<Point>(i).y << endl;
}
return 0;
}

方法二:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;

int main(int argc, char** argv) {
Mat img = imread("binary image");
for (int i = 0; i < img.cols; i++ ) {
for (int j = 0; j < img.rows; j++) {
if (img.at<uchar>(j, i) > 0) {
cout << i << ", " << j << endl; // Do your operations
}
}
}
return 0;
}

关于c++ - OpenCV:查找二进制 Mat 图像的所有非零坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19242662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com