我编写了一个简单的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分辨率。如果要这样显示,则必须在显示之前自己裁剪图像。

10-08 09:24
查看更多