2017-08-28 4 views
0

Hier versuche ich Blendung zu entfernen.inpaint() erzeugt nicht das erwartete Ergebnis. Warum?

Dies ist mein Originalbild.
enter image description here

und das ist meine Maske Bild.
enter image description here

habe ich die folgende Codezeile inpaint() zu verwenden:

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

Aber ich verstehe nicht, warum ich inpaint() mit einem beliebigen Effekt Ergebnis erhalten kann nicht. Kann jemand bitte den Grund angeben? Vielen Dank!

+0

Bitte versuchen: 'cv :: bitwise_not (VTHRESH, VTHRESH);' vor der Ruf nach 'inpaint'. –

+0

cv :: bitwise_not (vthresh, vthresh); dies einfach Bild invertieren. – Abc

+0

Ja sicher, dass es deine Maske umkehrt, ich dachte nur, dass deine Maske vielleicht falsch ist. –

Antwort

3

Hier gehen Sie:

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

Edit: Hinzugefügt Kopf- und Hauptfunktion es eine eigenständige Datei zu machen

+0

Ich habe es versucht. Ich bekomme immer noch Binärbild. nicht erwartetes Ergebnis; – Abc

+0

Ich kann keinen Grund finden, warum es immer noch binäres Bild gibt. – Abc

+0

@Abc Kopieren Sie den neuen Code und fügen Sie ihn in eine separate Datei ein und kompilieren Sie ihn mit g ++. – zindarod

Verwandte Themen