函数原型
void findNonZero( InputArray src, OutputArray idx );
参数说明
- InputArray类型的src,输入图像,如Mat类型。
- OutputArray类型的idx,非零点存放集合。
测试代码
#include <iostream> #include <opencv.hpp> using namespace std; using namespace cv; int main() { cv::Mat test(10, 10, CV_8UC1, cv::Scalar(0)); for (int i = 0; i < 10; ++i) { uchar *t = test.ptr<uchar>(i); for (int j = 0; j < 9; ++j) { t[j] = rand() % 255; } } vector<cv::Point> idx; cv::findNonZero(test, idx); cout << "number:" << idx.size() << endl; for (auto i : idx) { cout << "x:" << i.x << " y:" << i.y << endl; } system("pause"); return 0; }
测试效果
图1 随机生成矩阵
图2 结果图
测试代码中,随机生成10*10的矩阵,并将最后一列保留为零,统计非零点个数为90,一般我喜欢用vector存放非零点,大家也可以用自己熟悉的容器存放。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!