21xrx.com
2024-12-22 16:45:24 Sunday
登录
文章检索 我的文章 写文章
如何在C++的OpenCV中获取灰度值为255的点的坐标?
2023-07-09 11:03:50 深夜i     --     --
C++ OpenCV 灰度值 坐标 获取

在进行计算机视觉项目开发过程中,经常需要获取图像的某些特定信息,比如获取灰度值为255的点的坐标。在C++的OpenCV中,可以利用一些函数实现这一过程。

首先,需要读入图像,可以使用imread函数实现:

Mat image;

image = imread("image.jpg", IMREAD_GRAYSCALE);

这里读入的图像是灰度图像,IMREAD_GRAYSCALE表示读入灰度图像。接下来,可以使用findNonZero函数找到图像中灰度值为255的像素点坐标:

Mat nonZeroCoordinates;

findNonZero(image == 255, nonZeroCoordinates);

这里findNonZero函数的参数是一个逻辑矩阵,表示灰度值为255的点的像素坐标,这些点会被压缩到一个二维矩阵中,可以通过nonZeroCoordinates.at (i)获取每个像素点的xy坐标值。此时nonZeroCoordinates中存储的是所有灰度值为255的像素坐标。

接下来,可以使用如下方法打印出所有灰度值为255的像素坐标:

for (int i = 0; i < nonZeroCoordinates.total(); ++i)

{

    Point pnt(nonZeroCoordinates.at (i)[1], nonZeroCoordinates.at (i)[0]);

    cout << "x = " << pnt.x << ", y = " << pnt.y << endl;

}

这里通过循环遍历nonZeroCoordinates变量,获取每个像素点的xy坐标值,构造出实际的Point对象,然后打印出坐标值。

总之,通过OpenCV中的findNonZero函数可以轻松地获取图像中灰度值为255的点的像素坐标,从而进行后续操作。这是图像处理中非常重要的一步,可以为我们的算法和应用带来很多便利。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复