Ich versuche, auf alle Pixel zwischen 2 nicht linearen Punkten zuzugreifen. Aber ich konnte es nicht tun. Um es einfach zu sagen, mit der Funktion cvLine zeichne ich eine Linie zwischen zwei Punkten, wie in der Abbildung unten abgebildet (Ich möchte auf die Pixel entlang der grünen Linie zwischen zwei roten Punkten zugreifen).wie auf alle Pixel zwischen 2 nicht linearen Punkten auf einem Bild zugreifen
Ich habe versucht, die folgenden:
Rect myROI(midPx, midPy, (edgPx-midPx), (midPy-edgPy)+1);
Mat croppedImage = mask(myROI);
Es ist in meinem Fall nicht funktioniert.
Kann mir jemand helfen, das zu lösen?
Es tut mir leid, eigentlich habe ich das gleiche wie in Beispiel versucht, es war Fehler beim Kommentieren. Ich habe beide Methoden aus dem Beispiel ausprobiert;
LineIterator it(mask, Point(midPx, midPy), Point(edgPx, edgPy), 8);
LineIterator it2 = it;
vector<Vec3b> buf(it.count);
//cout << buf<< endl;
for(int i = 0; i < it.count; i++, ++it)
{
buf[i] = *(const Vec3b)*it;
}
// alternative way of iterating through the line
//for(int i = 0; i < it2.count; i++, ++it2)
//{
// cout <<it2.pos()<<","<<val<< endl;
//buf.at<Vec3b>(Point(i,0)) = val;
//}
imshow("buf Image", buf);
aber bei buf mit Fehlern links [i]
erreur: no match for ‘operator*’ in ‘*cv::Vec<unsigned char, 3>(((const unsigned char*)it.cv::LineIterator::operator*()))
'Es ist in meinem case.' funktioniert nicht - was nicht funktioniert, was sind die Fehler? –
mit Rect ist keine gute Wahl, da es alle Pixel innerhalb des Rechtecks zwischen 2 Punkten – KUMAR