2010-12-13 18 views
9

मैंने ओपनसीवी 2.2 स्थापित किया है और अब मुझे काम पर वेबकैम कैप्चर नहीं मिल रहा है। यह 2.1 में ठीक काम किया। ओपनसीवी वेबकैम का पता लगाता है, किसी भी त्रुटि या चेतावनियों की रिपोर्ट नहीं करता है, लेकिन प्रत्येक फ्रेम एक ग्रे छवि है।ओपनसीवी वेबकैम कैप्चर समस्या

VideoCapture cap(0); // open the default camera 
if(!cap.isOpened()) // check if we succeeded 
    return -1; 

Mat edges; 
namedWindow("edges",1); 
for(;;) 
{ 
    Mat frame; 
    cap >> frame; // get a new frame from camera 
    cvtColor(frame, edges, CV_BGR2GRAY); 
    //GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
    //Canny(edges, edges, 0, 30, 3); 
    imshow("edges", edges); 
    if(waitKey(30) >= 0) break; 
} 
// the camera will be deinitialized automatically in VideoCapture destructor 
return 0; 

किसी को भी इस मुद्दे में खत्म हो गई थी: मैं भी OpenCV विकी है एक कोड नमूना की कोशिश की? मैं 64 बिट विन 7 और विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं।

+2

आप से क्या मतलब है " एक भूरे रंग की छवि "? सॉलिड ग्रे, बिना संरचना के? या, बस एक ग्रेस्केल छवि? आप cvtColor() को छवि को ग्रेस्केल करने के लिए बुला रहे हैं, और imshow() कॉल ग्रेस्केल संस्करण दिखा रहा है ... – jtdubs

+0

ठोस ग्रे, ग्रेस्केल नहीं। – Figaro

+0

कभी-कभी यह ib थोड़ा धीमा होता है। मैट एज से पहले 'नींद (1) 'या' cv :: waitKey (100)' जोड़ें और लूप के अंदर इसे जोड़ें। यह काम करना चाहिए। और अगर 'फ्रेम' एक प्रिपर छवि है तो chekc को मत भूलना। – nutario

उत्तर

1

मुझे वास्तव में ओपनसीवी के बारे में कुछ भी पता नहीं है, लेकिन निम्न पंक्ति पर समस्या नहीं है?

cvtColor(frame, edges, CV_BGR2GRAY); 

ऐसा लगता है कि आप जानबूझकर बी-जी-आर कलर स्पेस को ग्रेस्केल स्पेस में परिवर्तित कर रहे हैं।

cvtColor(frame, edges, CV_BGR2RGB); 
+0

अधिकांश किनारे का पता लगाने वाले एल्गोरिदम केवल ग्रेस्केल छवियों पर काम करते हैं - ओप मूल रंग की बजाय ग्रेस्केल छवि प्रदर्शित कर रहा है एक –

+0

यह किसी समस्या पर मेरी राय देकर समस्या है जो मुझे नहीं पता ... :) मैंने इस मुद्दे को सोचा ग्रेस्केल छवि थी, न कि भूरे रंग की छवि ... मुझे मूर्खतापूर्ण। :) – Machado

9

मैं एक बहुत ही लंबी खोज के बाद समाधान नहीं मिला:

यह कुछ की तरह नहीं होना चाहिए।

समस्या यह है कि यदि फ्रेम दिखाने के बीच कोई देरी नहीं होती है तो यह समस्या होती है।

समाधान लूप में cvWaitKey(20); डाल दिया गया है।

+1

बस एक टिप्पणी जोड़ना चाहता था कि यह मेरी समस्या को ठीक करे! धन्यवाद :) – amr

3

यह मुद्दा मेरे द्वारा उपयोग किए गए कैमरे के साथ था, एमएसएफटी लाइफकैम। मैंने लॉजिटेक सी 210 और 120 की कोशिश की और वे दोनों ठीक काम करते हैं।

0

आप this post पर भी एक नज़र डालने का प्रयास कर सकते हैं।

यह आसान

बदलते

आयात सीवी से सीवी के रूप में

करने के लिए आयात cv2.cv में कहें,

मेरे लिए काम किया। here पोस्ट भी देखें।

3

यहां समाधान है।

कैप्चर की गई प्रत्येक छवि फ्रेम को नीचे की पहली पंक्ति में ग्रेस्केल छवि में परिवर्तित किया जा रहा है। अकेले कोड को टिप्पणी और चलाने से एक त्रुटि दिखाई देगी क्योंकि आप किसी भी संसाधित छवि को किनारों के फ्रेम में कैप्चर नहीं कर रहे हैं, जो imshow में प्रदर्शित किया जा रहा है।

इसलिए cvtColor लाइन पर टिप्पणी करें और imshow से frame में दूसरा पैरामीटर बदलें। यह आपको वेबकैम से रंगीन वीडियो प्रदर्शित करने की अनुमति देगा।

cvtColor(frame, edges, CV_BGR2GRAY); 

imshow("edges", frame); 
0

मुझे एक ही समस्या थी। मुझे लगा कि यह मेरे कैमरे पर सेटिंग्स हो सकती है, क्योंकि मुझे 640x480px (जिसे मैं समायोजित नहीं कर सका) का इनपुट होना चाहता था और मैं फ़ीड के लिए अनुमतियों को समायोजित नहीं कर सका। तो मैंने एक वर्चुअल वेबकैम स्थापित किया, जिसने दोनों मुद्दों को काफी हल किया। मुझे इनपुट संवाद मिला, वर्चुअल कैमरा चुना और यह काम किया। मैं इसे ऐप में भी 640x480 पर सेट करने में कामयाब रहा।

मेरा वर्चुअल कैमरा कईकैम कहलाता था, लेकिन ऐसा लगता है कि यह किशोर लड़कियों के लिए बनाया गया है, मुझे 3 अन्य ऐप्स इंस्टॉल करना चाहता था और मुझे अभी भी यकीन नहीं है कि यह मौसम 'पूरक' ट्रोजन के साथ नहीं आता है।

हालांकि, यह आपको रंग, रंग, कंट्रास्ट इत्यादि और परीक्षण के लिए आवश्यक अन्य सामानों को समायोजित करने देता है।

+0

आप पहले पूछने के लिए एक टिप्पणी छोड़ देंगे कि वर्चुअल कैमरा जोड़ना उपयुक्त है या नहीं। – StarPinkER

0

मैं cvtColor उपयोग कर रहा हूँ और पाया कि

cvtColor(image,image,CV_BGR2RGB); काम नहीं किया।

लेकिन अच्छी खबर यह है कि यह परिवर्तन काम करता है !!

cvtColor(image,image,**COLOR_BGR2RGB**); 

भी शामिल हैं:

include opencv2/imgproc/imgproc.hpp 

और .pro फ़ाइल में पुस्तकालय:

-lopencv_imgproc 
0

इस प्रयास करें:

VideoCapture cap(0); // open the default camera 
if(!cap.isOpened()) // check if we succeeded 
{ 
    cout<<"Cam not captured\n"; 
} 

Mat frame; 
namedWindow("frame"); 
for(;;) 
{ 
    cap >> frame; // get a new frame from camera 
    imshow("frame", frame); 

    if(waitKey(10) >= 0) break; 
} 

return 0; 
संबंधित मुद्दे