2014-07-19 9 views
12

का उपयोग कर स्क्रीन पर एक छवि को फ़िट करना मैं मैक ओएस एक्स 13 पर ओपनसीवी का उपयोग करके एक छवि प्रदर्शित करना चाहता हूं। छवि का आकार 1920 × 1080 है। जब मैं इस कोड को चलाता हूं, तो मुझे सिर्फ एक छवि का एक हिस्सा दिखाई देता है। मुझे स्क्रीन पर छवि फिट करने की जरूरत है।imshow opencv

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include<opencv2/core/core.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include "opencv2/opencv.hpp" 
#include<string.h> 
using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat image=imread("/Users/rafikgouiaa/Qt/projects/MakeVideo/build-MakeVideo- Desktop_Qt_5_0_2_clang_64bit-Debug/im.jpg"); 
    namedWindow("Display frame",CV_WINDOW_AUTOSIZE); 
    imshow("Display frame", image); 
    waitKey(0); 
    return 0 
} 
+0

सीवी :: आकार परिवर्तन (..)? –

उत्तर

4

namedWindow() को CV_WINDOW_AUTOSIZE पासिंग विंडो का आकार स्वत: ही प्रदर्शित छवि फिट करने के लिए समायोजित कर देगा। और आप छवि का हिस्सा शायद इसलिए देखते हैं क्योंकि आपकी स्क्रीन के लिए छवि बहुत बड़ी है।

काम करने के लिए, आप पहले छवि को छोटे आकार में आकार दे सकते हैं। इस तरह:

Mat image=imread("..."); 
resize(image, image, Size(image.cols/2, image.rows/2)); // to half size or even smaller 
namedWindow("Display frame",CV_WINDOW_AUTOSIZE); 
imshow("Display frame", image); 
+1

WINDOW_NORMAL का उपयोग करके विंडो या स्क्रीन फिट करने के लिए छवि को स्केल नहीं किया गया था। इस जवाब के अनुसार, मुझे छवि का आकार बदलना पड़ा। – redcurry

16

आप एक छवि है कि स्क्रीन संकल्प से बड़ा है दिखाने की जरूरत है, तो आप imshow से पहले

namedWindow("Display frame", WINDOW_NORMAL) 

कॉल करने के लिए की आवश्यकता होगी।

खिड़की कॉल कृपया

cv::resizeWindow("Display frame", WIDTH, HEIGHT); 

की वांछनीय आकार सेट करने के लिए अधिक जानकारी के लिए देखते हैं http://docs.opencv.org/modules/highgui/doc/user_interface.html#imshow

+2

मैं जोड़ता हूं यह महत्वपूर्ण है नामित विन्डो का दूसरा तर्क WINDOW_NORMAL (WINDOW_AUTOSIZE के विपरीत) पर सेट है। अन्यथा, विंडो का आकार नहीं बदला जाएगा। – tagoma

-1

आप CV_WINDOW_OPENGL डाल की जरूरत के बजाय CV_WINDOW_AUTOSIZE