1. 程式人生 > >【計算機視覺】關於用opencv 設定攝像頭讀解析度問題的若干說明

【計算機視覺】關於用opencv 設定攝像頭讀解析度問題的若干說明

關於用opencv 設定攝像頭讀解析度問題的若干說明

1 問題最初起因

我想充分利用相機高解析度來提高視角,故用opencv直接設定攝像機解析度。不幸的我倒黴出現問題。

VideoCapture類讀AVI視訊可以設定高解析度1294*964,讀攝像頭為啥不能設定1294*964,可以設定640*480,也可以設定320*240

有讀攝像頭設定解析度1294*964成功的嗎,相機要求視場大,距離目標不能太遠,要求穩定。所以就用最高解析度了。
是我相機問題,還是VideoCapture類問題 

2 問題表現形式

cap.set(CV_CAP_PROP_FRAME_WIDTH,1294);

cap.set

(CV_CAP_PROP_FRAME_HEIGHT,964);


攝像頭攝取的圖片超出了OpenCV的最大限度,造成緩衝區大小不匹配:

解決方法很簡單。

    cv::VideoCapture capture(1);

double width=capture.get(CV_CAP_PROP_FRAME_WIDTH);

double height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);

capture.set(CV_CAP_PROP_FRAME_WIDTH,width);

capture.set(CV_CAP_PROP_FRAME_HEIGHT,height);

參考 的

2.2 但沒有解決,因為預設為VideoCapture  640*480

VideoCapture cap(1);

//double width=cap.get(CV_CAP_PROP_FRAME_WIDTH);

//double height=cap.get(CV_CAP_PROP_FRAME_HEIGHT);

//cap.set(CV_CAP_PROP_FRAME_WIDTH,width);

//cap.set(CV_CAP_PROP_FRAME_HEIGHT,height);

 VideoCapture 或basler 相機預設為640*480 

VideoCapture capture(1);//預設為640*480

,不可設定再大,可以設定再小

//VideoCapture capture("1.avi");//讀取視訊1294*964--640*480

//capture.set(CV_CAP_PROP_FRAME_WIDTH,1294);//

//capture.set(CV_CAP_PROP_FRAME_HEIGHT,964);

//double width=capture.get(CV_CAP_PROP_FRAME_WIDTH);

//double height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);

//capture.set(CV_CAP_PROP_FRAME_WIDTH,width);

//capture.set(CV_CAP_PROP_FRAME_HEIGHT,height);


2.3 但可以設定再小


2.4  攝像機採集影象時出現了問題影象是條狀

一般使用,攝像機自帶的軟體,開啟攝像機,設定攝像機的解析度是沒有問題的。如果你使用其他軟體,開啟攝像機採集影象時出現了問題。問題就是您讀取得影象是條狀。


這說明你攝像設定的攝像機解析度是有問題的。

2.5 自帶軟體可以,SDK可以 設定高解析度1294*964


3 問題說明
設定攝像機解析度的問題。最小解析度,寬度為4,高度為3。以此類推應該為4的倍數或3的倍數。你可以通過videocapture成員函式set來設定,攝像機的解析度。videocapture預設的情況下為640×480。

3.1

 opencv 可以   4-3 8-6  16-12  32-24  320-240  640-480  960-720 1280-960

4-24-6不可以 1288-966 不可以

1284-963可以

capture.set(CV_CAP_PROP_FRAME_WIDTH,4);////可以顯示 8*6最小

capture.set(CV_CAP_PROP_FRAME_HEIGHT,3);


capture.set(CV_CAP_PROP_FRAME_WIDTH,960);//可以

capture.set(CV_CAP_PROP_FRAME_HEIGHT,720);


capture.set(CV_CAP_PROP_FRAME_WIDTH,1284);//最大

capture.set(CV_CAP_PROP_FRAME_HEIGHT,963);



筆記本攝像頭禁用方法

兩種方法實現攝像頭的禁用:

1、部分品牌和型號的膝上型電腦有禁用攝像頭的快捷鍵,比如THINKPAD E450,該機使用快捷鍵FN+F7禁用或者啟用攝像頭,如圖:

2、在裝置管理器裡禁用攝像頭,右鍵點選“計算機”,選擇“管理”,在左側點選“裝置管理器”,可以在影象裝置下找到攝像頭,右鍵點選,選擇禁用即可,如圖:

 

 

opencv讀取百萬高清攝像頭。先設定攝像頭解析度。