Wasserzeichen mit opencv @ aus einem Bild entfern

Zunächst habe ich dieses Bild und möchte eine Anwendung erstellen, die ähnliche Bilder erkennt und den Kreis (Wasserzeichen) daraus entfernt.

int main(){
    Mat im1,im2,im3,gray,gray2,result;

    im2=imread(" (2).jpg");
    namedWindow("x",CV_WINDOW_FREERATIO);
    imshow("x",im2);

    //converting it to gray
    cvtColor(im2,gray,CV_BGR2GRAY);
    // creating a new image that will have the cropped ellipse
    Mat ElipseImg(im2.rows,im2.cols,CV_8UC1,Scalar(0,0,0));

    //detecting the largest circle
    GaussianBlur(gray,gray,Size(5,5),0);
    vector<Vec3f> circles;
    HoughCircles(gray,circles,CV_HOUGH_GRADIENT,1,gray.rows/8,100,100,100,0);

    uchar x;
    int measure=0;int id=0;
    for(int i=0;i<circles.size();i++){
        if(cvRound(circles[i][2])>measure && cvRound(circles[i][2])<1000){
            measure=cvRound(circles[i][2]);
            id=i;
        }
    }


    Point center(cvRound(circles[id][0]),cvRound(circles[id][1]));
    int radius=cvRound(circles[id][2]);
    circle(im2,center,3,Scalar(0,255,0),-1,8,0);
    circle(im2,center,radius,Scalar(0,255,0),2,8,0);
    ellipse(ElipseImg,center,Size(radius,radius),0,0,360,Scalar(255,255,255),-1,8);
    cout<<"center: "<<center<<" radius: "<<radius<<endl;



    Mat res;
    bitwise_and(gray,ElipseImg,result);
    namedWindow("bitwise and",CV_WINDOW_FREERATIO);
    imshow("bitwise and",result);

    // trying to estimate the Intensity  of the circle for the thresholding
    x=result.at<uchar>(cvRound(circles[id][0]+30),cvRound(circles[id][1]));
    cout<<(int)x;

    //thresholding the  output image
    threshold(ElipseImg,ElipseImg,(int)x-10,250,CV_THRESH_BINARY);
    namedWindow("threshold",CV_WINDOW_FREERATIO);
    imshow("threshold",ElipseImg);

    // making bitwise_or
    bitwise_or(gray,ElipseImg,res);
    namedWindow("bitwise or",CV_WINDOW_FREERATIO);
    imshow("bitwise or",res);

    waitKey(0);
}

So weit was ich gemacht habe ist:

Ich konvertiere es in GraustufenIch erkenne den größten Kreis mit Hilfe von Hough-Kreisen und erstelle dann einen Kreis mit demselben Radius in einem neuen BildDieser neue Kreis mit dem Graustufenkreis mit bitwise_and) gib mir ein Bild mit nur diesem Kreis Threshold das neue Bildbitwise_or das Ergebnis der Schwelle

Mein Problem ist, dass kein schwarzer Text auf der gekrümmten weißen Linie in diesem Kreis angezeigt wurde. Ich habe versucht, die Farbe mithilfe der Pixelwerte anstelle des Schwellenwerts zu entfernen, aber das Problem ist das gleiche. Gibt es also Lösungen oder Vorschläge?

Dies sind die Ergebnisse:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage