Ich möchte nur das Ergebnis wie gepostet here zu reproduzieren.Wie funktioniert PerspectiveTransform?
Ich umschreibe die Quelle zu EmguCV Form.
Image<Bgr, byte> image = new Image<Bgr, byte>(@"B:\perspective.png");
CvInvoke.cvShowImage("Hello World!", image);
float[,] scrp = { { 43, 18 }, { 280,40}, {19,223 }, { 304,200} };
float[,] dstp = { { 0,0}, { 320,0}, { 0,240 }, { 320,240 } };
float[,] homog = new float[3, 3];
Matrix<float> c1 = new Matrix<float>(scrp);
Matrix<float> c2 = new Matrix<float>(dstp);
Matrix<float> homogm = new Matrix<float>(homog);
CvInvoke.cvFindHomography(c1.Ptr, c2.Ptr, homogm.Ptr, Emgu.CV.CvEnum.HOMOGRAPHY_METHOD.DEFAULT, 0, IntPtr.Zero);
CvInvoke.cvGetPerspectiveTransform(c1, c2, homogm);
Image<Bgr, byte> newImage = image.WarpPerspective(homogm, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC, Emgu.CV.CvEnum.WARP.CV_WARP_DEFAULT, new Bgr(0, 0, 0));
CvInvoke.cvShowImage("newImage", newImage);
Dies ist das Testbild.
Das neue Bild ist immer ein leeres Bild.
Kann jemand mir helfen, meinen Quellcode arbeiten zu lassen ???
cool, tnx! Hast du eine Idee, wie ich das Verhältnis der Kanten bekommen kann, wenn ich ein Bild mit einem rechteckigen Objekt habe? – Michael
Was meinst du mit "das Verhältnis der Kanten"? Wenn Sie die Werte wie 253, 211 meinen, müssen Sie die Bilder manuell im Paint-Programm oder ähnlichen Programmen messen. – Gqqnbig