opencv中findNonZero函数的用法
时间: 2023-06-15 17:06:02 浏览: 744
OPENCV函数手册(中文)
`findNonZero` 是 OpenCV 中的一个函数,用于查找矩阵中非零元素的位置。
函数原型如下:
```cpp
void findNonZero(InputArray src, OutputArray idx);
```
其中:
- `src`:输入矩阵,可以是任意维度的数组。
- `idx`:输出数组,用于存储非零元素的索引。它是一个 N×D 的二维矩阵,其中 N 是非零元素的个数,D 是 `src` 矩阵的维度。
例如,我们有一个二值图像 `img`,想要找到其中所有非零元素的位置,可以使用以下代码:
```cpp
Mat img = imread("test.png", IMREAD_GRAYSCALE);
Mat idx;
findNonZero(img, idx);
```
此时,`idx` 中存储的就是所有非零元素的坐标。如果想要获取第 i 个非零元素的坐标,可以使用 `idx.at<Point>(i)`,其中 `Point` 是 OpenCV 中表示二维坐标的类。
需要注意的是,`findNonZero` 函数只适用于单通道矩阵。如果需要在多通道矩阵中查找非零元素的位置,需要先将其转换为单通道矩阵。
阅读全文