- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里遇到问题,需要您的帮助。我一直在尝试使用cvWaitKey()函数捕获键盘笔触。
cvWaitKey(10)应该每10ms返回一次键盘击键。
但就我而言,我每18秒就会得到一次,这是我在18秒的时间内一次按下的所有按键。
当我按“esc”键(请参见代码)时,通常应该关闭的窗口仍处于打开状态。
在控制台中,我得到这个:
VIDIOC_QUERYMENU:无效的参数
VIDIOC_QUERYMENU:无效的参数
VIDIOC_QUERYMENU:无效的参数
-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-11536870939-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-111536870939-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1-1-1-1-1-1-1-1-1-1
带有:
1536870939对应于我按'esc'时
-1对应于没有按键时
感谢帮助。
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "iostream"
using namespace std;
int main()
{
IplImage *src=cvCreateImage(cvSize(640,480), 8, 3);
CvCapture* capture =cvCaptureFromCAM(CV_CAP_ANY);
int key;
while(1){
src = cvRetrieveFrame( capture );
cvNamedWindow( "out", CV_WINDOW_AUTOSIZE );
cvShowImage( "out", src );
key = cvWaitKey(10);
cout<<key;
if( key == 1536870939 ) break; //if 'esc' is pressed (in ubuntu 10.04)
cvGrabFrame( capture );
}
cvDestroyAllWindows();
cvReleaseCapture( &capture );
return 0;
}
最佳答案
问题的原因是cout的工作方式:它缓冲字符,并且仅在您发送换行符或明确要求这样做时才将它们发送到控制台。 (第三种情况:缓冲区已满...但这就是您需要等待18秒的时间。)
因此,在您当前的cout << '\n';
语句之后放置cout.flush();
或cout
。
(顺便说一句:VIDIOC_QUERYMENU:Invalid argument
来自v4l(网络摄像头)驱动程序...我不知道1536870939来自何处,ESC应该是27 :))
关于keyboard - 无法使用cvWaitKey()捕获键盘笔触,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205173/
我正在看书。作者把功能解释得很清楚。问题是我的程序没有检测到按下的任何键,所以我无法终止窗口或停止循环。这是问题的一部分。 while(1) { frame = cvQu
我有一个用 c++ 和 opencv 编写的程序,它应该计算视差图。现在我想在一个 while 循环中使用这些值,如下所示: while(true) { cv::StereoSGBM dispar
我正在将 PS3 Eye Camera Video 捕捉到我调整大小和显示的图像,并将它们保存到磁盘。我在帧率方面遇到了麻烦,所以我测量了每个进程的时间。事实证明,唯一真正减慢捕获速度的进程是 cvW
我不确定为什么,但出于一个神秘的原因,我的 C++ 应用程序在到达 cvWaitKey(0) 时不再等待,它只是通过了这一行,就像这个函数什么都不做一样!我也试过 cvWaitKey(100000)
cvWaitKey()的执行过程中会发生什么?有哪些典型用例?我在 OpenCV 引用资料中看到了它,但文档并不清楚它的确切用途。 最佳答案 cvWaitKey(x) / cv::waitKey(x)
有什么方法可以使用 openCV 中的 cvWaitKey 捕获从小键盘按下的数字键。我尝试使用此 list 中的代码来自 adobe,但它们不起作用。 当我尝试打印出按下的键的值时,我没有得到小键盘
如何在启用NumLock 时确定是否按下按钮q if (cvWaitKey(0) == 'q') cout <<"you press: q"; 当 NumLock 启用时,不起作用。 最佳答案 如
我遇到了一个问题,需要你的帮助。我一直在尝试使用 cvWaitKey() 函数从创建的窗口捕获键盘敲击。如果我从创建窗口的同一线程调用 cvWaitKey,该函数工作正常,但是当我从一个线程创建窗口并
我是一名优秀的程序员,十分优秀!