के साथ ड्राइंग मैचों को मैं इस काम को काम करने के लिए नहीं मिल सकता। असल में मैं फीचर डिटेक्शन कर रहा हूं और एक संदर्भ छवि के साथ मेल खाता हूं। मैं अपनी इनपुट छवि के शीर्ष पर मिलान की गई सुविधाओं को ओवरले करना चाहता हूं। यहां मेरा कोड है:एंड्रॉइड ओपनसीवी: फीचर 2 डी
public Mat startProcessing(Mat inputImage) {
Imgproc.cvtColor(inputImage, rgb, Imgproc.COLOR_GRAY2RGB);
myFeatures.detect(rgb, keypoints);
descriptorExtractor.compute(inputImage, keypoints, imageDescriptors);
descriptorMatcher.match(templateDescriptors, imageDescriptors, matches);
Features2d.drawMatches(rgb, keypoints, templateImage, templateKeypoints, matches, rgb);
Imgproc.cvtColor(rgb, outputImage, Imgproc.COLOR_RGB2RGBA);
return outputImage;
}
यह विशेषताएं 2d.drawMatches जो विशेष रूप से समस्या है। एंड्रॉइड त्रुटि के अनुसार मुझे मिल गया है, कुछ आयाम अस्तर नहीं कर रहे हैं। सत्य कहा जाता है, मुझे यह भी यकीन नहीं है कि drawMatches
एंड्रॉइड पर काम करना चाहिए क्योंकि कहीं भी कोई दस्तावेज नहीं है।
मैं जो करने में सक्षम होना चाहता हूं वह इनपुट इमेज के शीर्ष पर मैच खींचता है। मुझे काम करने के लिए Feature2d.drawKeypoints
मिल गया है, लेकिन मुझे यकीन है कि मैं MatOfDMatch matches
को MatOfKeypoint
ऑब्जेक्ट में कनवर्ट करने के बारे में कैसे सुनिश्चित करूंगा। इसके अलावा मुझे यह भी यकीन नहीं है कि MatOfDMatch कैसे काम करता है - क्या इसमें इसके अंदर कुछ सहयोगीता नहीं है जो वर्णनकर्ताओं के अनुरूप है?
जगह पर होने के लिए खेद है, मुझे एंड्रॉइड के साथ ओपनसीवी का उपयोग करने में वास्तव में कठिन समय है। वहां सी ++ दस्तावेज अच्छा है, लेकिन एंड्रॉइड सामग्री के रास्ते में बहुत कम है। किसी भी मदद के लिए धन्यवाद!
अभी तक धन्यवाद। मैंने imageOut = inputImage.clone() का उपयोग शुरू किया और इससे drawMatches काम करने देता है। हालांकि मैं इस छवि को वापस करना चाहता हूं जैसे कि उपयोगकर्ता कैमरे पर क्या देखता है लेकिन आयाम थोड़ा अलग हैं - यह 640 * 480 के कैमरे के संकल्प के बजाय 704 * 480 है। यह देखते हुए कि मेरी टेम्पलेट छवि की चौड़ाई 64 है, ऐसा लगता है कि drawMatches उन्हें एक तरफ रख रहा है। क्या मैं सिर्फ इनपुट छवि पर मिलान किए गए क्षेत्र पर एक आयताकार या कुछ दिखा सकता हूं? – JDS
हाँ मुझे ऐसा लगता है। सूची 'सूची match_list = match.toList(); सूची kp_list = keypoints.toList();' और फिर सूची 'kp_list.get (match_list.get (i) .queryIdx) के माध्यम से पुनरावृत्त करने के लिए मिलान और कीपॉइंट्स को बदलें।' और अपने आयत को परिभाषित करने वाले दो बिंदुओं का सामना करने के लिए मिलान किए गए कीपॉइंट्स के न्यूनतम और अधिकतम एक्स और वाई को ढूंढें।फिर एक आयताकार 'रेक्ट रोई = नया रेक्ट (नया प्वाइंट (मिनीएक्स, मिनीवाई), नया प्वाइंट (मैक्सएक्स, मैक्सवाई)) परिभाषित करें और फिर बस' मैट छविफिन = नई मैट (इनपुट इमेज, रोई) करें; 'और यह केवल फसल होगा मिलान क्षेत्र –
andriy