program story

OpenCV의 cvWaitKey () 함수는 무엇을합니까?

inputbox 2020. 10. 23. 07:51
반응형

OpenCV의 cvWaitKey () 함수는 무엇을합니까?


실행 중에 어떤 일이 발생 cvWaitKey()합니까? 일반적인 사용 사례는 무엇입니까? 나는 그것을보고 에서 OpenCV 참조하지만 문서는 정확한 목적에 명확하지 않다.


cvWaitKey(x) / cv::waitKey(x) 두 가지를 수행합니다.

  1. OpenCV 창 (예 :에서 생성됨)에서 키를 누를 때까지 x 밀리 초를 기다립니다 cv::imshow(). 콘솔 입력을 위해 stdin에서 수신 대기하지 않습니다. 이 시간 동안 키를 누르면 키의 ASCII 코드를 반환합니다. 그렇지 않으면을 반환합니다 -1. ( x 가 0이면 키를 누를 때까지 무기한 대기합니다.)
  2. 로 창을 만들 cv::namedWindow()거나로 이미지를 표시 하는 것과 같은 모든 창 이벤트를 처리합니다 cv::imshow().

OpenCV 신규 사용자의 일반적인 실수는 .NET Framework로 cv::imshow()각 그리기를 추적하지 않고 비디오 프레임을 통해 루프 를 호출 하는 것입니다 cv::waitKey(30). 이 경우에는 highgui가에서 그리기 요청을 처리 할 시간이 주어지지 않기 때문에 화면에 아무것도 나타나지 않습니다 cv::imshow().


간단히 말해서, X 밀리 초 cvWaitKey()동안 잠자기 상태로 아무 키나 누를 때까지 기다립니다.

int cvWaitKey(int X);

키를 누르면이 함수는 키의 ASCII 코드를 반환합니다. 또는 해당 시간 동안 아무 키도 누르지 않으면 -1을 반환합니다 .


cvWaitKey(0) 버튼을 누를 때까지 프로그램을 중지합니다.

cvWaitKey(10)프로그램을 중지하지 않고 깨어나서 버튼을 누르면 프로그램을 종료하도록 경고합니다. 루프를 cvWaitkey중지하지 않기 때문에 루프에 사용됩니다 .

정상적인 사용

char k;

k=cvWaitKey(0);

if(k == 'ESC')

함께 k하면 누른 키가 무엇인지 볼 수 있습니다.


cvWaitKey( )기능에 문제가있는 사람을위한 메모입니다 . cvWaitKey(x)전혀 기다리지 않는 경우 실제로 창이 열려 있는지 확인하십시오 (예 :) cvNamedWindow(...). 함수 호출 cvNamedWindow(...)전에 선언을 넣으십시오 cvWaitKey().


. 의 인수는 다음 0과 같이 해석됩니다.infinite

. highGUI 창을 드래그하려면 계속해서 cv::waitKey()함수를 호출해야 합니다. 예 : 정적 이미지의 경우 :

cv::imshow("winname", img);

while(cv::waitKey(1) != 27); // 27 = ascii value of ESC


/* 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제공된 시간 을 기다립니다 .


키가 눌 렸는지 확인하기 위해 밀리 초를 기다립니다. 해당 간격 동안 누르면 ASCII 값을 반환하고 그렇지 않으면 -1입니다.

참고 URL : https://stackoverflow.com/questions/5217519/what-does-opencvs-cvwaitkey-function-do

반응형