【发布时间】:2014-01-08 22:39:55
【问题描述】:
我编写了一个简单的 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 将分辨率强制为正方形分辨率?
非常感谢您的帮助。
【问题讨论】:
-
cv::namedWindow()使用默认参数int flags=WINDOW_AUTOSIZE。将其更改为cv::namedWindow("windowname",WINDOW_NORMAL),您将能够调整窗口大小。另一种可能性是调整图像大小并在窗口中全尺寸显示。
标签: opencv