मैं अपने आईपैड द्वारा कैप्चर की गई छवियों पर मार्कर का पता लगा रहा हूं। इसके कारण मैं उनके बीच अनुवाद और घूर्णन की गणना करना चाहता हूं, मैं इन छवियों पर छवियों पर परिवर्तन परिप्रेक्ष्य बदलना चाहता हूं, इसलिए ऐसा लगता है कि मैं उन्हें सीधे मार्करों से ऊपर ले जा रहा हूं।ओपनसीवी: पूरे छवि पर लपेटें
के रूप में:
अभी मैं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));
कौन सा मेरी इन परिणामों (warpPerspective
का परिणाम के लिए सही-नीचे कोने में देखो) देता है का उपयोग कर रहा
आप शायद परिणाम छवि में परिणाम छवि के बाएं कोने में मान्यता प्राप्त मार्कर शामिल हैं। मेरी समस्या यह है कि मैं पूरी छवि (फसल के बिना) पर कब्जा करना चाहता हूं ताकि मैं बाद में उस छवि पर अन्य मार्करों का पता लगा सकूं।
मैं यह कैसे कर सकता हूं? शायद मुझे solvePnP
फ़ंक्शन से रोटेशन/अनुवाद वैक्टर का उपयोग करना चाहिए?
संपादित करें:
Unfortunatelly बदलते विकृत छवि का आकार बहुत मदद नहीं है, क्योंकि छवि अभी भी अनुवाद किया है तो मार्कर के बाएं शीर्ष कोने छवि के ऊपरी-बाएं कोने में है।
उदाहरण के लिए जब मैं आकार दोगुना कर दिया का उपयोग कर:
cv::warpPerspective(*_image, *_undistortedImage, M, cv::Size(2*_image->cols, 2*_image->rows));
मैं इन छवियों को प्राप्त किया है:
मैं जानता हूँ कि उत्पादन छवि अलग dimenstions हो सकता है, मैं उन्हें दोहरीकरण के साथ की कोशिश की है (परिणामों के लिए संपादित सवाल पर देखने के), लेकिन उसने ऐसा नहीं किया मुझे उपयोगी परिणाम दिया। आप कहते हैं कि मेरा कोड अधूरा है - मुझे क्या जोड़ना चाहिए? मैं रूपांतरण मैट्रिक्स प्राप्त करने के लिए 'getPerspectiveTransform' का उपयोग कर रहा हूं, और मैं 'dst' मैट्रिक्स के रूप में पता लगाए गए मार्कर के कोनों के निर्देशांक का उपयोग कर रहा हूं (ओपनसीवी दस्तावेज़ीकरण के अनुसार - http://docs.opencv.org/modules/imgproc /doc/geometric_transformations.html#getperspectivetransform)। – Axadiw
ठीक है मुझे लगता है कि (-6, -6) इत्यादि के आपके लक्ष्य निर्देशांक थोड़ा अजीब हैं। क्योंकि इसका मतलब है कि परिणामस्वरूप छवि में आपका लक्ष्य आयताकार इन निर्देशांकों पर होगा। उन्हें स्थानांतरित करने के लिए लक्ष्य आयत को लक्ष्य छवि के बीच में ले जाएं। – littleimp
धन्यवाद - मुझे पता चला है कि मैंने गलत पॉइंट 2 डी सरणी पोस्ट की है (मैंने इसे अभी प्रश्न में संपादित किया है)। इन बिंदुओं को थोड़ा सा स्थानांतरित करने से पूरी आउटपुट छवि चली गई है, लेकिन मैं अभी भी इसके कुछ हिस्सों को फसल कर रहा हूं। – Axadiw