के निष्पादन के दौरान क्या होता है cvWaitKey()? कुछ विशिष्ट उपयोग के मामले क्या हैं? मैंने इसे OpenCV संदर्भ में देखा था लेकिन प्रलेखन अपने सटीक उद्देश्य पर स्पष्ट नहीं है।
cvWaitKey()अब एक पदावनत सी फ़ंक्शन है। waitKey()आधुनिक C ++ समकक्ष है।
के निष्पादन के दौरान क्या होता है cvWaitKey()? कुछ विशिष्ट उपयोग के मामले क्या हैं? मैंने इसे OpenCV संदर्भ में देखा था लेकिन प्रलेखन अपने सटीक उद्देश्य पर स्पष्ट नहीं है।
cvWaitKey()अब एक पदावनत सी फ़ंक्शन है। waitKey()आधुनिक C ++ समकक्ष है।
जवाबों:
cvWaitKey(x) / cv::waitKey(x) दो काम करता है:
cv::imshow())। ध्यान दें कि यह कंसोल इनपुट के लिए स्टड पर नहीं सुनता है। यदि उस दौरान कोई कुंजी दबाया गया था, तो यह कुंजी का ASCII कोड लौटाता है। नहीं तो लौट आता है -1। (यदि x शून्य है, तो यह कुंजी प्रेस के लिए अनिश्चित काल तक प्रतीक्षा करता है।)cv::namedWindow()या उसके साथ इमेज दिखाना cv::imshow()।Opencv नवागंतुकों के लिए एक सामान्य गलती cv::imshow()वीडियो फ्रेम के माध्यम से एक लूप में कॉल करना है, बिना प्रत्येक ड्रा के साथ cv::waitKey(30)। इस मामले में, स्क्रीन पर कुछ भी नहीं दिखता है, क्योंकि हाईगूई को ड्रॉ अनुरोधों को संसाधित करने के लिए कभी भी समय नहीं दिया जाता है cv::imshow()।
सादा बस, एक्स मिलिसेकंड के cvWaitKey()लिए सोता है , किसी भी कुंजी को दबाने के लिए इंतजार कर रहा है।
int cvWaitKey(int X);
यदि किसी कुंजी को दबाया जाता है, तो यह फ़ंक्शन ASCII कोड की कुंजी देता है। या रिटर्न -1 अगर उस दौरान कोई चाबी नहीं दबाया गया था।
cvWaitKey(0) जब तक आप एक बटन दबाते हैं तब तक आपका कार्यक्रम बंद हो जाता है।
cvWaitKey(10)जब आप एक बटन दबाते हैं तो अपना प्रोग्राम बंद नहीं करते हैं लेकिन अपने प्रोग्राम को समाप्त करने के लिए जागते हैं और सतर्क करते हैं। इसका उपयोग लूप में किया जाता है क्योंकि cvWaitkeyलूप बंद नहीं होता है।
सामान्य उपयोग
char k;
k=cvWaitKey(0);
if(k == 'ESC')
साथ kआप देख सकते हैं कुंजी दबाने था।
। तर्क के 0रूप में व्याख्या की हैinfinite
। HighGUI विंडो को खींचने के लिए, आपको लगातार cv::waitKey()फ़ंक्शन को कॉल करने की आवश्यकता है । स्थिर चित्रों के लिए उदा:
cv::imshow("winname", img);
while(cv::waitKey(1) != 27); // 27 = ascii value of ESC
किसी के लिए भी ध्यान दें, जिन्हें cvWaitKey( )फंक्शन की समस्या थी । यदि आप पा रहे हैं कि cvWaitKey(x)सभी इंतजार नहीं कर रहे हैं, तो सुनिश्चित करें कि आपके पास वास्तव में एक खिड़की खुली है (यानी cvNamedWindow(...))। cvNamedWindow(...)किसी भी cvWaitKey()फ़ंक्शन कॉल की घोषणा से पहले रखें ।
/* Assuming this is a while loop -> e.g. video stream where img is obtained from say web camera.*/
cvShowImage("Window",img);
/* A small interval of 10 milliseconds. This may be necessary to display the image correctly */
cvWaitKey(10);
/* to wait until user feeds keyboard input replace with cvWaitKey(0); */
cvWaitKeyबस एक देरी के बारे में कुछ प्रदान करता है। उदाहरण के लिए:
char c = cvWaitKey(33);
if( c == 27 ) break;
Tis मेरे कोड के अलावा था जिसमें एक वीडियो को OpenCV में लोड किया गया था और फ़्रेम आउटपुट किया गया था। 33कोड साधन में नंबर उसके बाद 33ms, एक नया फ्रेम दिखाया जाएगा। इसलिए, 33msस्क्रीन पर दिखाए जा रहे प्रत्येक फ्रेम के बीच एक घना या समय अंतराल था । उम्मीद है की यह मदद करेगा।
cvWaitKey(milliseconds) बस कीबोर्ड के अगले कुंजी स्ट्रोक के लिए एक पैरामीटर के रूप में प्रदान किए गए मिलीसेकंड की प्रतीक्षा करें।
मानव आंखें 1/10 सेकंड से कम समय में चलती हुई चीज को नहीं देख पाती हैं, इसलिए हम स्क्रीन पर कुछ समय के लिए उसी छवि फ्रेम को धारण करने के लिए इसका उपयोग करते हैं। जैसे ही कीबोर्ड की कुंजी दबाया जाएगा अगला ऑपरेशन किया जाएगा।
संक्षेप में cvWaitKey(milliseconds)या तो मुख्य प्रेस या millisecondसमय के लिए प्रतीक्षा करें ।
यह देखने के लिए मिलीसेकेंड प्रतीक्षा करता है कि क्या कुंजी को दबाया गया है, अगर उस अंतराल में दबाया जाता है तो उसका एससीआई मान वापस कर दें, अन्यथा यह -1