【計算機視覺】關於用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
攝像頭攝取的圖片超出了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-2,4-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);
4 筆記本攝像頭禁用方法
兩種方法實現攝像頭的禁用:
1、部分品牌和型號的膝上型電腦有禁用攝像頭的快捷鍵,比如THINKPAD E450,該機使用快捷鍵FN+F7禁用或者啟用攝像頭,如圖:
2、在裝置管理器裡禁用攝像頭,右鍵點選“計算機”,選擇“管理”,在左側點選“裝置管理器”,可以在影象裝置下找到攝像頭,右鍵點選,選擇禁用即可,如圖:
opencv讀取百萬高清攝像頭。先設定攝像頭解析度。