OpenCV - 获取轮廓中对象顶部的坐标

时间:2016-08-18 13:17:55

标签: opencv

给定一个如下图所示的轮廓,有没有办法获得轮廓中顶点的X,Y坐标?我正在使用Python,但其他语言示例都很好。

enter image description here

2 个答案:

答案 0 :(得分:0)

由于每个像素都需要检查,我担心你必须在图像上逐行迭代,看看哪个是第一个白色像素。

答案 1 :(得分:0)

您可以迭代图像,直到遇到不是黑色的像素。

我将用C ++编写一个例子。

cv::Mat image;  // your binary image with type CV_8UC1 (8-bit 1-channel image)
int topRow(-1), topCol(-1);
for(int i = 0; i < image.rows; i++) {
    uchar* ptr = image.ptr<uchar>(i);
    for(int j = 0; j < image.cols; j++) {
        if(ptr[j] != 0) {
             topRow = i;
             topCol = j;
             std::cout << "Top point: " << i << ", " << j << std::endl;
             break;
        }
    }
    if(topRow != -1)
        break;
}