Po prostu chcę odtworzyć wynik jako opublikowany here.Jak włączyć funkcję PerspectiveTransform?
Przepisuję źródło na formularz EmguCV.
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);
To jest obraz testowy.
Nowy obraz jest zawsze pustym obrazem.
Czy ktoś może mi pomóc, aby mój kod źródłowy działał ???
cool, tnx! Czy masz pomysł, w jaki sposób mogę uzyskać stosunek krawędzi, jeśli mam jakiś obraz z prostokątnym obiektem? – Michael
Co masz na myśli przez "stosunek krawędzi"? Jeśli masz na myśli wartości takie jak 253, 211, musisz ręcznie zmierzyć obrazy w programie Paint lub innych podobnych programach. – Gqqnbig