영상처리
<C++> 이미지에서 비어있는 부분 채우기 2
park__
2022. 4. 4. 16:39
이전 글에서 했던 방법을 사용하여 이미지를 채울 때 이미지가 코너에 있는 경우 원하는 이미지가 나오지 않는다.
위와 같은 이미지를 이전 방법으로 사용할 경우 전체가 흰색으로 나온다.
이를 해결하는 방법으로 이미지를 카피한 후 가장 끝에 선을 그려준다.
Mat img = imread("..\\corner_donut.bmp", IMREAD_GRAYSCALE);
Mat im_clone = img.clone();
Mat im_floodfill_inv;
int start_x = 0;
int start_y = 0;
uchar *img_data = im_clone.data;
while(1){
if (img_data[start_x] == 255)
{
start_x++;
}
else
{
break;
}
floodFill(im_clone, Point(start_x, start_y), Scalar(255));
bitwise_not(im_clone, im_floodfill_inv);
Mat im_out = (img | im_floodfill_inv);
시작 부분이 흰색일 경우 검정색인 부분을 찾아 시작하게 해주는 반복문을 넣었다.