मैं कुछ चीजें करके ओपनसीवी सीखने की कोशिश कर रहा हूं। इस विशेष मामले में, मैं एक ग्रेस्केल छवि के छोटे विमान लेना चाहता था। कोड काम करता प्रतीत होता है, लेकिन यह केवल 7 और 6 के लिए अच्छा काम करता है, शेष 6 के लिए इतना नहीं, क्योंकि यह केवल छवि के 1/3 के लिए एक अच्छा परिणाम दिखाता है। मुझे अभी तक यह नहीं मिला है कि इसके साथ क्या गलत है। मैं इस मामले पर कुछ मदद की सराहना करता हूं, क्योंकि मैं पुस्तकालयों के साथ अपना पहला कोड कर रहा हूं।ओपनसीवी में 1-प्लेन छवि के बिट विमान केवल छवि के 1/3 के लिए काम करते हैं
यहाँ मैं पहली बिट के लिए क्या मिलता है:
और यहाँ 7 बिट के लिए यह है:
और यहाँ मेरे कोड है:
#include <opencv2\opencv.hpp>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat m1 = imread("grayscalerose.jpg");
imshow("Original",m1);
int cols, rows, x, y;
cols = m1.cols;
rows = m1.rows;
printf("%d %d \n",m1.rows,m1.cols);
Mat out1(rows, cols, CV_8UC1, Scalar(0));
out1 = (m1/128); //Here's where I divide by either 1,2,4,8,16,32,64, or 128 to get the corresponding bit planes
for (int y = 0; y < rows; y++){
for (int x = 0; x < cols; x++){
out1.at<uchar>(y,x) = (out1.at<uchar>(y,x) % 2);
} }
out1 = out1*255;
imshow("out1",out1);
waitKey(0);
destroyWindow("out1");
}
अग्रिम धन्यवाद। मुझे उम्मीद है कि मेरी व्याख्या बहुत गन्दा नहीं थी।
मेरे साथ इस तरह के विस्तृत उत्तर साझा करने के लिए धन्यवाद। मुझे कबूल करना होगा, मैट्रिक्स अभिव्यक्ति के बारे में हिस्सा और uint32_t का उपयोग मेरे लिए बहुत स्पष्ट नहीं है। अगर मैं पूछूं, तो वे वास्तव में कैसे काम करते हैं? –
@ डी। सैंज़ 'uint32_t' एक असाइन किए गए पूर्णांक 32 बिट चौड़े के लिए सिर्फ एक [मानक टाइपपीफ] (http://en.cppreference.com/w/cpp/header/cstdint) है। मैं स्पष्ट होना पसंद करता हूं, इसलिए यह स्पष्ट है कि मैं किस प्रकार का काम करता हूं इससे कोई फर्क नहीं पड़ता कि मैं किस मंच पर कोड संकलित करता हूं। –
@ डी। सैंज मैट्रिक्स अभिव्यक्तियों के संबंध में: ओपनसीवी लिखा गया है, [अंकगणितीय परिचालन] (http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html) सरणी पर "मैट्रिक्स अभिव्यक्ति" (एक विशेष प्रकार)। एक ही सी ++ अभिव्यक्ति में उन परिचालनों की एक संयोजन को संकलक को अनुकूलित कोड उत्पन्न करने की अनुमति देता है। –