我寫了一個簡單的OpenCV程序,可以恢復我的網絡攝像頭視頻流並將其顯示在一個簡單的窗口中。我想調整這個窗口的分辨率爲256x256,但它將其更改爲320x240。使用OpenCV可以使用網絡攝像頭視頻流進行平方分辨率嗎?
這裏是我的源代碼:
#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,我想一個256×256的分辨率。我認爲這是不可能的,因爲相機管理其輸出視頻流緩衝區,並且必須保持相同的比率(寬度/高度)。你對這個想法有什麼看法?
是否有一個函數可以強制使用OpenCV作爲平方分辨率的分辨率?
非常感謝您的幫助。
'cv :: namedWindow()'使用默認參數'int flags = WINDOW_AUTOSIZE'。將其更改爲'cv :: namedWindow(「windowname」,WINDOW_NORMAL)',您將可以調整窗口大小。另一種可能性是調整圖像大小並在窗口中顯示完整大小。 – Micka