Как полностью преобразовать одну сторону обнаруженного края в белую? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть изображение RGB (рисунок приведен) Исходное изображение RGB , на котором я применил обнаружение края Canny и получил края, как на рисунке После обнаружения Canny Edge полученные края Теперь я хочу полностью покрыть верхнюю половину края белым цветом. Примерно так ... Моя цель . Как можно заметить, заливка белого цвета неправильная, и часто она оказывается ниже линии края.

Предпочтительный код в Python

1 Ответ

0 голосов
/ 27 мая 2020

Для этой цели в opencv есть несколько функций, но я хочу показать свой простой алгоритм. пока не достигнете белого пикселя (255)

Когда вы нажмете белый пиксель, который должен принадлежать кругу, отметьте его Сделайте все столбцы белыми до этого маркировочного пикселя

Вот результаты и код:

Ввод:

enter image description here

Результат:

enter image description here

Код:

#include <opencv2/highgui/highgui.hpp>
#include "opencv2/opencv.hpp"
#include <iostream>


using namespace cv;
using namespace std;

int main()
{

    Mat img = imread("/ur/img/directory/img.png",0);
    imshow("Before", img);

    for(int i=0; i<img.rows; i++)
    {
        for(int j=0; j<img.cols; j++)
        {
            if(img.at<uchar>(Point(j,i))>250)
            {
                for(int k=0; k<i; k++)
                {
                    img.at<uchar>(Point(j,k)) = 255;
                }
            }
        }
    }


    imshow("Result", img);

    waitKey(0);
}
...