我有一個灰度相機(不顏色),並試圖呈現圖像。我上Raspbian運行,在樹莓派2.我已經抓住了一些代碼,並將其裸露到最低限度,取得了一些進展:試圖用C++中的OpenCV渲染灰度相機中的圖像。幾幀後掛起
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
bool rtn;
// rtn = cap.set(CV_CAP_PROP_FRAME_WIDTH , 752);
// cout << "set to 752:" << rtn << endl;
// rtn = cap.set(CV_CAP_PROP_FRAME_HEIGHT , 480);
// cout << "set to 480:" << rtn << endl;
int count = 1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cout << "cols:" <<frame.cols << endl;
cout << "rows:" << frame.rows << endl;
cout << "count:" << count++ << endl;
cout << "Channel Count:"<< frame.channels() << endl;
// cvtColor(frame, edges, CV_BGR2GRAY);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}.
現在,我得到的灰度圖像,但只有幾個運行(它會變化)幀,然後掛起。有趣的是,如果你等待足夠長的時間,有時它會在「選擇超時」消息後再掃描幾幀。
我已經嘗試運行以下運行應用程序之前,但它似乎並沒有幫助:
rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000
而且,即使我指定爲720x480的攝像頭分辨率(每相機規格),它會報告幀大小爲640x480。
看來,當我把下面的代碼了:
cvtColor(frame, edges, CV_BGR2GRAY);
它的工作原理,但它不是一個灰度圖像,它是綠色的。請注意,我已將註釋設置爲框架寬度和高度。
你爲什麼要拆分單個通道矩陣(你告訴相機輸出是灰度)? – Miki
我嘗試使用捕獲的圖像,但它是綠色的。 – jordanthompson
如果是灰度,它可能是綠色的:D您可能只是顯示它錯了 – Miki