Ein ziemlich einfaches Konzept, ich habe eine 640x480 Mat und eine 800x480 Bildschirm, so versuche ich das Originalbild zu kopieren Mittelpunkt eines schwarzen 800x480 Bildes, so dass das Seitenverhältnis beibehalten wird, aber der gesamte Bildschirm verwendet wird.Kopieren von cv :: Mat zu einem anderen erstellt "Assertion fehlgeschlagen 0 <= _colRange.start && .."
folgte ich this Post und versuchte, beiden Lösungen (direkte Kopie und die Region von Interesse) und den gleichen Fehler:
OpenCV Error: Assertion failed (0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols) in Mat, file /home/pi/opencv-3.0.0/modules/core/src/matrix.cpp, line 464
terminate called after throwing an instance of 'cv::Exception'
what(): /home/pi/opencv-3.0.0/modules/core/src/matrix.cpp:464: error: (-215) 0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols in function Mat
Aborted
Der problematische Code:
cv::Mat displayimage = cv::Mat(800, 480, CV_16U, cv::Scalar(0));
modimage1.copyTo(displayimage.rowRange(1,480).colRange(81,720));
Ich versuchte es zuerst mit Start/End Range/Zeile von (0,480) und (80,720), aber dann klang der Fehler so, als könnte er nicht bei 0 beginnen, also dachte ich natürlich, dass ich um 1 war und ich begann bei 1 mit dem selben Ergebnisse. Aber in Wirklichkeit ist der Fehler für die Spalten und nicht die Zeilen, und mit den Spalten um 1 würde nicht einmal eine Rolle spielen. Also, wie gefällt es mir nicht, wo ich dieses Bild kopieren möchte?
imho werden Unter-Bilder leichter mit cv können :: elements Rect abgerufen. – Micka