OpenCV: Find all non-zero coordinates of a binary Mat image(OpenCV:查找二进制 Mat 图像的所有非零坐标)
问题描述
我正在尝试查找二进制图像的非零 (x,y) 坐标.
I'm atttempting to find the non-zero (x,y) coordinates of a binary image.
我发现了一些对函数 countNonZero()
的引用,它只计算非零坐标和 findNonZero()
我不确定如何访问或使用,因为它似乎已从文档中完全删除.
I've found a few references to the function countNonZero()
which only counts the non-zero coordinates and findNonZero()
which I'm unsure how to access or use since it seems to have been removed from the documentation completely.
这个是最接近的参考我找到了,但仍然没有帮助.我将不胜感激任何具体的帮助.
This is the closest reference I found, but still not helpful at all. I would appreciate any specific help.
- 要指定,这是使用 C++
- To specify, this is using C++
推荐答案
这里解释了 findNonZero()
如何保存非零元素.以下代码对于访问二进制图像的非零坐标应该很有用.方法 1 在 OpenCV 中使用 findNonZero()
,方法 2 检查每个像素以找到非零(正)像素.
Here is an explanation for how findNonZero()
saves non-zero elements. The following codes should be useful to access non-zero coordinates of your binary image. Method 1 used findNonZero()
in OpenCV, and Method 2 checked every pixels to find the non-zero (positive) ones.
方法一:
#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;
}
这篇关于OpenCV:查找二进制 Mat 图像的所有非零坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:OpenCV:查找二进制 Mat 图像的所有非零坐标
基础教程推荐
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- C++,'if' 表达式中的变量声明 2021-01-01