inpaint () не дает ожидаемого результата. Зачем?

Здесь я пытаюсь убрать блики.

Это мое оригинальное изображение.
введите описание изображения здесь

и это мое изображение маски.
введите описание изображения здесь

Я использовал следующую строку кода, чтобы использовать inpaint():

inpaint(image, vthresh, out, 5.0, CV_INPAINT_NS); //CV_INPAINT_TELEA , CV_INPAINT_NS

Но я не понимаю, почему я не могу получить какой-либо эффект, используя inpaint(),
Кто-нибудь может указать причину? Спасибо!

0

Решение

Ну вот:

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

using namespace cv;
using namespace std;

int main(int args, char** argv)
{
//Read the image
Mat img = imread("/Desktop/apple.png", -1);
//create inpaint mask the size of original image
Mat inpaintMask = img.clone();
//convert mask from rgb to gray
cv::cvtColor(inpaintMask, inpaintMask, cv::COLOR_RGB2GRAY);
// convert mask from gray to binary by thresholding, you can play with 170 and 255 args to achieve desired mask
cv::threshold(inpaintMask, inpaintMask, 170, 255, cv::THRESH_BINARY);
Mat inpainted;
//finally call inpaint function and pass the args
inpaint(img, inpaintMask, inpainted, 3, INPAINT_TELEA);

imshow("image", img);
imshow("mask", inpaintMask);
imshow("inpainted image", inpainted);
cv::waitKey(0);
}

Изменить: Добавлены заголовки и основная функция, чтобы сделать его автономным файлом

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]