OpenCV: Zugeschnittenes Bild resultiert in einem komplett schwarzem Bild
-
Ich habe eine Methode implementiert, die Fläche für Fläche entlang der Polylines zuschneiden soll, dementsprechend sind es jeweils nicht-rechteckige Flächen. Nach genauem Befolgen zig Tutorials, bastelte ich diese Methode zusammen:
void crop(Mat src) { Scalar mu, sigma; meanStdDev(src, mu, sigma); Canny(src, dst, mu.val[0] - sigma.val[0], mu.val[0] + sigma.val[0], 3, false); ///adaptive canny for edge detection of the real image cvtColor(dst, cdst, CV_GRAY2BGR); HoughLinesP(dst, lines, 1, CV_PI / 2, 100, 50, 100); sort(lines.begin(), lines.end(), vec4iSortByX()); ///sort all lines by number Vec4i current, previous; Point pt1, pt2, ppt1, ppt2; for (size_t i = 1; i < lines.size(); i++) { current = lines[i]; pt1 = Point(current[0], current[1]); pt2 = Point(current[2], current[3]); previous = lines[i - 1]; ppt1 = Point(previous[0], previous[1]); ppt2 = Point(previous[2], previous[3]); vector<Point> pt; pt.push_back(Point(previous[2], previous[3])); ///segment, calculate all polylines pt.push_back(Point(previous[0], previous[1])); pt.push_back(Point(current[0], current[1])); pt.push_back(Point(current[2], current[3])); Rect roi = boundingRect(pt); contourRegion = src(roi); Mat mask = Mat::zeros(contourRegion.size(), CV_8UC3); //just black vector<Point> ROI_Poly; approxPolyDP(pt, ROI_Poly, 1.0, true); fillConvexPoly(mask, &ROI_Poly[0], ROI_Poly.size(), Scalar(0, 0, 0, 0), 8, 0); cv::Mat fMask = cv::Mat(src.size(), CV_8UC3); fMask.setTo(0); // duplicate the mask on three channels cv::Mat bgr_mask[3]; split(mask, bgr_mask); cv::Mat in[] = { bgr_mask[0],bgr_mask[0],bgr_mask[0] }; cv::merge(in, 3, mask); // copy the mask to a "full mask" of the same size as the image mask.copyTo(fMask(roi)); Mat result = Mat(src.size(), CV_8UC3); src.copyTo(result, fMask); imshow("result", result(roi)); } }
... und mittlerweile bringt es mich zur Verzweiflung, denn ich kriege nur einen schwarzen Output raus, leider keinen Bildinhalt. Die Größe des Outputs passt, aber der Inhalt ist nun mal "keiner". Was mache ich falsch?
-
Ich gehe hier von einem Problem mit der Anwendung von OpenCV aus -> Grafikboard.
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Spiele-/Grafikprogrammierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ab welcher transformation ist das resultat schwarz?
-
Leider bereits ab dem ersten bis zum letzten erzeugtem Polygon.
-
schaut das resultat der Hough transform richtig aus?
versuch mal als farbe was anderes als Scalar(0, 0, 0, 0), vielleicht Scalar(1, 1, 1, 1) oder Scalar(255, 255, 255, 255).
-
rapso schrieb:
schaut das resultat der Hough transform richtig aus?
versuch mal als farbe was anderes als Scalar(0, 0, 0, 0), vielleicht Scalar(1, 1, 1, 1) oder Scalar(255, 255, 255, 255).
Habe ich bereits versucht, war leider erfolgslos.
-
poste vielleicht ein minimal repro case
https://nopaste.xyz/eventuell testet das jemand der sich auskennt. (Ich nutze opencv bestenfalls einmal im jahr)