के प्रिंटिंग मान मुझे किसी ओपनसीवी डिस्क्रिप्टर एक्स्ट्रैक्टर की 'गणना' विधि के उपयोग के माध्यम से प्राप्त वर्णक मैट्रिक्स के मानों को प्रिंट करने में कुछ परेशानी हो रही है। मैं एक फीचर के डिस्क्रिप्टर को एक फ़ाइल में एक-एक करके प्रिंट करना चाहता हूं, लेकिन हमेशा जब मैं 'एट' के साथ डिस्क्रिप्टर मैट्रिक्स के कुछ तत्व तक पहुंचता हूं, तो मुझे उस तत्व के लिए एक अलग मान मिलता है। निम्नलिखित है पाश 'के लिए' मैं जब 'पर' का उपयोग कर वर्णनकर्ता मैट्रिक्स के उत्पादन मूल्य का परीक्षण करने के लिए प्रयोग किया जाता एक:कीपॉइंट डिस्क्रिप्टर मैट्रिक्स ओपनसीवी
for(int i=0; i<nF; i++){
if(lpx != keypoints[i].pt.x && lpy != keypoints[i].pt.y){
usedFeatures++;
cerr << descriptors.row(i) << endl << endl; // printing row of descriptor matrix
fileS << keypoints[i].pt.y << " " << keypoints[i].pt.x << " ";
fileS << keypoints[i].size << " " << keypoints[i].angle << endl;
if(i == nF - 2){
//printing subvector of descriptor matrix made of the element at row i and col 0
cerr << "get row i, col 0 " << descriptors.row(i).col(0) << endl;
//same as before just inverting the order of access
cerr << "get col 0, row i: " << descriptors.col(0).row(i) << endl;
//printing the value of the element with 'at'
cerr << (int)descriptors.at<uchar>(i, 0);
//creating a new int and giving it the value of element (i, 0) of descriptor matrix. Should be the same
//value shown on the subvector before
int test = descriptors.at<uchar>(i, 0);
//printing value of element
cerr << "i, 0: " << test << endl;
}
दूसरा 'अगर' एक परीक्षण 'अगर' मैं मान मुद्रित देखने के लिए किया जाता है वर्णनकर्ताओं के तत्वों का उपयोग करते समय। - अब, nF पर
cerr << descriptors.row(i) << endl << endl;
द्वारा मुद्रित 2 iteraction, मैं निम्नलिखित परिणाम है:
[20, 11, 0, 18, 51, 3, 0, 3, 133, 50, 0, 0, 0, 0, 0, 11, 133, 18, 0, 0, 0, 0, 0, 3,
119, 2, 0, 0, 0, 0, 0, 2, 19, 5, 0, 4, 55, 27, 1, 1, 133, 25, 0, 1, 4, 1, 0, 22, 133,
18, 0, 0, 0, 0, 0, 14, 131, 13, 1, 0, 0, 0, 0, 1, 12, 1, 0, 1, 56, 133, 25, 13, 133,
14, 0, 0, 3, 8, 20, 80, 133, 38, 0, 0, 0, 0, 0, 51, 106, 11, 1, 0, 0, 0, 0, 23, 0, 0,
0, 0, 19, 126, 70, 11, 23, 0, 0, 0, 0, 9, 83, 133, 53, 1, 0, 0, 0, 0, 2, 133, 26,
3, 2, 0, 0, 0, 0, 28]
और अपेक्षा के अनुरूप, दूसरा 'अगर' के अंदर पहले दो प्रिंट:
cerr << "get row i, col 0 " << descriptors.row(i).col(0) << endl;
cerr << "get col 0, row i: " << descriptors.col(0).row(i) << endl;
मुझे दे [20]
लेकिन अन्य दो प्रिंट
cerr << (int)descriptors.at<uchar>(i, 0);
और
int test = descriptors.at<uchar>(i, 0);
cerr << "i, 0: " << test << endl;
मुझे के बजाय 0 20. पूरा परिणाम मैं लाइन nF -2 के लिए किया था कि मैंने पहले से पता चला देते हैं, जब 'पर' के साथ तत्वों तक पहुँचने और उन्हें मुद्रण था:
0 0 160 65 0 0 48 65 0 0 0 0 0 0 144 65 0 0 76 66
0 0 64 64 0 0 0 0 0 0 64 64 0 0 5 67 0 0 72 66
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 48 65 0 0 5 67 0 0 144 65 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 64 0 0 238 66
0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 64
जो मैं अपेक्षा कर रहा था उससे बिल्कुल अलग है। मैंने पहले से ही बहुत सी चीजों की कोशिश की है: केवल int की बजाय फ्लोट, डबल, हस्ताक्षरित int के साथ कास्टिंग, और उन प्रकारों के चर को असाइन करना; प्रिंट करने से पहले मैट्रिक्स को परिवर्तित करना, फिर मैट्रिक्स को प्रतिलिपि बनाना, अलग-अलग प्रकार के साथ वर्णनकर्ता मैट्रिक्स बनाना ... लेकिन उनमें से कोई भी काम नहीं करता। मुझे संदेह है कि इसमें डिस्क्रिप्टर मैट्रिक्स के प्रकार के साथ कुछ करना है, हालांकि मुझे लगभग यकीन है कि इसमें उचर प्रकार (मैंने elemSize के साथ चेक किया है)
अग्रिम धन्यवाद, और मेरी अंग्रेजी और आकार के लिए खेद है सवाल।
धन्यवाद! यद्यपि यह समस्या का समाधान नहीं करता है, लेकिन अभी मैं यह कर रहा हूं, भविष्य में यह रूपांतरण मेरे लिए उपयोगी हो सकता है, इसलिए मैं आपके उत्तर की सराहना करता हूं! –
@Alberto ए मुझे पता है कि यह आपकी समस्या के "क्यों" का जवाब नहीं देता है, लेकिन आप वर्णनकर्ताओं को 'डबल' के रूप में एक्सेस करने का प्रयास कर सकते हैं? मेरे मामले में, 'temp' पंक्ति की शुरुआत के लिए सिर्फ एक सूचक है, लेकिन' temp' का उपयोग कर पंक्ति का पहला तत्व प्राप्त करने के लिए, मुझे केवल 'डबल वैल = * temp' होना होगा। शायद ऐसा करने की कोशिश करो? मुझे पता है कि मुझे वर्णनकर्ताओं तक पहुंचने के लिए उपयुक्त प्रकार खोजने में भी मुश्किल समय था। – penelope