OpenCV-寻找非零点cv::findNonZero

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

函数原型

void findNonZero( InputArray src, OutputArray idx );

参数说明

  1. InputArray类型的src,输入图像,如Mat类型。
  2. 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存放非零点,大家也可以用自己熟悉的容器存放。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

© 版权声明
THE END
喜欢就支持一下吧
点赞314 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容