Tôi chỉ muốn sao chép kết quả như được đăng here.Làm cách nào để làm cho PerspectiveTransform hoạt động?
Tôi viết lại nguồn thành dạng 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);
Đây là hình ảnh thử nghiệm.
Hình ảnh mới luôn là hình ảnh trống.
Có ai có thể giúp tôi thực hiện công việc mã nguồn của mình không ???
mát, tnx! Bạn có một ý tưởng làm thế nào tôi có thể nhận được tỷ lệ của các cạnh nếu tôi có một số hình ảnh với đối tượng hình chữ nhật? – Michael
Bạn có ý nghĩa gì bởi "tỷ lệ của các cạnh"? Nếu bạn có nghĩa là các giá trị như 253, 211, bạn phải đo hình ảnh theo cách thủ công trong chương trình Paint hoặc các chương trình tương tự khác. – Gqqnbig