2017-08-28 133 views
0

這裏我試圖去除眩光。inpaint()不會產生預期結果。爲什麼?

這是我的原始圖像。
enter image description here

這是我的蒙版圖像。
enter image description here

我用下面的代碼行使用inpaint()

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

但我不明白爲什麼我不能讓使用inpaint()任何影響的結果。 任何人都可以請指出原因?謝謝!

+0

請嘗試:'CV :: bitwise_not(VTHRESH,VTHRESH);'前打電話給'inpaint'。 –

+0

cv :: bitwise_not(vthresh,vthresh); 這只是反轉圖像。 – Abc

+0

是的,它確定它會反轉你的面具,我只是在想,也許你的面具是錯的。 –

回答

3

在這裏你去:

#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); 
} 

編輯:添加標題和主要功能,使之成爲獨立的文件

+0

我試了一下。我仍然得到二進制圖像。不是預期的結果。 – Abc

+0

我無法找到它仍然給二進制圖像的原因。 – Abc

+0

@Abc將新代碼複製並粘貼到單獨的文件中,然後使用g ++進行編譯。 – zindarod

相關問題