실행 중에 어떤 일이 발생 cvWaitKey()
합니까? 일반적인 사용 사례는 무엇입니까? 나는 그것을보고 에서 OpenCV 참조하지만 문서는 정확한 목적에 명확하지 않다.
cvWaitKey()
이제는 더 이상 사용되지 않는 C 함수입니다. waitKey()
최신 C ++에 해당합니다.
실행 중에 어떤 일이 발생 cvWaitKey()
합니까? 일반적인 사용 사례는 무엇입니까? 나는 그것을보고 에서 OpenCV 참조하지만 문서는 정확한 목적에 명확하지 않다.
cvWaitKey()
이제는 더 이상 사용되지 않는 C 함수입니다. waitKey()
최신 C ++에 해당합니다.
답변:
cvWaitKey(x) / cv::waitKey(x)
두 가지를 수행합니다.
cv::imshow()
. 콘솔 입력을 위해 stdin에서 수신 대기하지 않습니다. 이 시간 동안 키를 누르면 키의 ASCII 코드를 반환합니다. 그렇지 않으면을 반환합니다 -1
. ( x 가 0이면 키를 누를 때까지 무기한 대기합니다.)cv::namedWindow()
거나로 이미지를 표시 하는 것과 같은 모든 창 이벤트를 처리합니다 cv::imshow()
.OpenCV 신규 사용자의 일반적인 실수는 .NET을 사용 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
하면 누른 키가 무엇인지 볼 수 있습니다.
. 의 인수는 다음 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(milliseconds)
키보드의 다음 키 입력에 대한 매개 변수로 제공된 밀리 초를 기다립니다.
인간의 눈은 1/10 초 이내에 움직이는 것을 볼 수 없으므로이를 사용하여 화면에 일정 시간 동안 동일한 이미지 프레임을 유지합니다. 키보드의 키를 누르면 바로 다음 작업이 수행됩니다.
짧게 cvWaitKey(milliseconds)
키를 누르거나 millisecond
제공된 시간 을 기다립니다 .