我编写了一个简单的OpenCV程序,用于恢复网络摄像头视频流并将其显示在一个简单的窗口中。我想将此窗口调整为256x256分辨率,但将其更改为320x240。
这是我的源代码:
#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace std;
int main(int argc, char** argv)
{
char key;
cvNamedWindow("Camera_Output", cv::WINDOW_NORMAL);
CvCapture *capture = cvCaptureFromCAM(CV_CAP_ANY);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 256);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 256);
while(1){
IplImage *frame = cvQueryFrame(capture);
cvShowImage("Camera_Output", frame);
key = cvWaitKey(10);
if (key == 27){
break;
}
}
cvReleaseCapture(&capture);
cvDestroyWindow("Camera_Output");
return 0;
}
输出分辨率为320x240,我想要256x256分辨率。我认为这是不可能的,因为摄像机管理其输出视频流缓冲区,并且必须保持相同的比率(宽度/高度)。您如何看待这个想法?
是否存在可以使用OpenCV将分辨率强制为平方分辨率的函数?
在此先感谢您的帮助。
最佳答案
好像您的视频源无法处理256x256分辨率。如果要这样显示,则必须在显示之前自己裁剪图像。