iPad'im tarafından yakalanan resimlerde belirteçler tespit ediyorum. Bu yüzden aralarındaki çevirileri ve rotasyonları hesaplamak istiyorum, bu imgede görüntülerdeki değişim perspektifini değiştirmek istiyorum, bu yüzden onları doğrudan işaretleyicilerin üzerinde yakaladım.OpenCV: wrapPerspective tüm görüntü için
As: Sağ şimdi benim bu sonuçlar (warpPerspective
sonucunu sağ alt köşesinde bakmak) verir
points2D.push_back(cv::Point2f(0, 0));
points2D.push_back(cv::Point2f(50, 0));
points2D.push_back(cv::Point2f(50, 50));
points2D.push_back(cv::Point2f(0, 50));
Mat perspectiveMat = cv::getPerspectiveTransform(points2D, imagePoints);
cv::warpPerspective(*_image, *_undistortedImage, M, cv::Size(_image->cols, _image->rows));
kullanıyorum
Muhtemelen sonuç görüntüsünün, sonuç resminin sol üst köşesinde tanınmış işaretçi içerdiğini görürsünüz. Benim sorunum, tüm görüntüyü (kırpmadan) yakalamak istediğimden, o görüntüdeki diğer işaretleyicileri daha sonra algılayabilmem.
Bunu nasıl yapabilirim? Belki solvePnP
işlevinden döndürme/çeviri vektörleri kullanmalıyım?
DÜZENLEME:
Maalesef görüntü hala çok işaretleyici sol üst köşesi resmin sol üst köşesinde olduğu çevrilmiştir çünkü çarpık görüntünün boyutu, çok yardımcı olmamaktadır değişen. böylece,
Ben çıkış görüntü farklı dimenstions sahip olabileceğini biliyorum, (sonuçlar için düzenlenmiş soruya bak) onları iki katına ile denedim, ama etmedi bana yararlı sonuçlar verdi. Kodumun eksik olduğunu söylüyorsunuz - ne eklemeliyim? Dönüşüm matrisi elde etmek için 'getPerspectiveTransform' kullanıyorum ve 'dst' matrisi olarak tespit edilen işaretleyici köşelerinin koordinatlarını kullanıyorum (OpenCV belgelerine göre - http://docs.opencv.org/modules/imgproc /doc/geometric_transformations.html#getperspectivetransform). – Axadiw
Sanırım (-6, -6) vb. Hedef koordinatlarınız biraz garip. Çünkü bu, hedef dikdörtgeninizin ortaya çıkan görüntüdeki bu koordinatlarda olacağı anlamına gelir. Onları hareket ettirmek için hedef dikdörtgeni sadece hedef görüntünün ortasına taşıyın. – littleimp
Teşekkürler - Yanlış point2D dizisi gönderdiğimi anladım (şu anda soruda düzenledim). Bu noktaları kaydırmak, çıktı görüntüsünün tamamını biraz hareket ettirdi, ancak yine de bazı kısımlarını kırpıyorum. – Axadiw