OpenCV의 cvWaitKey () 함수는 무엇을합니까?
실행 중에 어떤 일이 발생 cvWaitKey()
합니까? 일반적인 사용 사례는 무엇입니까? 나는 그것을보고 에서 OpenCV 참조하지만 문서는 정확한 목적에 명확하지 않다.
cvWaitKey(x) / cv::waitKey(x)
두 가지를 수행합니다.
- OpenCV 창 (예 :에서 생성됨)에서 키를 누를 때까지 x 밀리 초를 기다립니다
cv::imshow()
. 콘솔 입력을 위해 stdin에서 수신 대기하지 않습니다. 이 시간 동안 키를 누르면 키의 ASCII 코드를 반환합니다. 그렇지 않으면을 반환합니다-1
. ( x 가 0이면 키를 누를 때까지 무기한 대기합니다.) - 로 창을 만들
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
'program story' 카테고리의 다른 글
For Of 루프에서 객체 사용 (0) | 2020.10.23 |
---|---|
Python NameError : 'include'이름이 정의되지 않았습니다. (0) | 2020.10.23 |
SQL에서 Entity Framework 수 그룹화 기준 (0) | 2020.10.23 |
정규식에서 중첩 된 캡처 그룹은 어떻게 번호가 매겨 집니까? (0) | 2020.10.22 |
가상 디렉터리를 추가 할 때 "경로 (C : \ inetpub \ wwwroot)에 대한 액세스를 확인할 수 없습니다." (0) | 2020.10.22 |