2013-01-08 73 views
1

我已經成功在我的Raspberry Pi上安裝了OpenCV,並且一直在使用基本的C和C++代碼進行一些簡單的網絡攝像頭流式處理,實時Canny邊緣檢測等等。Raspberry Pi在運行OpenCV時變得無響應

但是,我遇到了我使用的兩個網絡攝像頭的問題。首先,我坐過的一款非常基礎且價格便宜的羅技,效果不錯,但圖像質量很不理想。但是當我切換到我的Logitech 510c相機時,圖像更好,但是Pi凍結。

相反,流式處理程序繼續運行良好,但我無法退出程序 - Raspberry Pi會停止響應鍵盤和鼠標,唯一的退出方法是拔掉Raspberry Pi。以下是一些代碼示例:

#include <cv.h> 
#include <highgui.h> 
#include <stdio.h> 

int main(){ 

    int c, i, j; 

    //Capture frame from camera 
    CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); 
    if(!capture){ 
    fprintf(stderr, "Error: capture is NULL \n"); 
    getchar(); 
    return -1; 
    } 

    //Set resolution of capture 
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 256); 
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 192); 

    //Create window for display 
    cvNamedWindow("canny"); 

    while(true){ 

    //Find/mark edges using canny 
    IplImage* frame = cvQueryFrame(capture); 
    IplImage* grey = cvCreateImage(cvGetSize(frame), 8, 1); 
    cvCvtColor(frame, grey, CV_RGB2GRAY); 
    IplImage* frame2 = cvCreateImage(cvSize(grey->width+6, grey->height+6), grey->depth, grey->nChannels); 

    CvPoint offset = cvPoint(3,3); 
    cvCopyMakeBorder(grey, frame2, offset, IPL_BORDER_REPLICATE, cvScalarAll(0)); 
    IplImage* edges = cvCreateImage(cvGetSize(frame2), IPL_DEPTH_8U, frame2->nChannels); 
    cvCanny(frame2, edges, 4900, 39200, 7); 

    cvShowImage("canny", edges); 

    //Wait for a keypress 
    int c = cvWaitKey(10); 
    if (c!=-1) 
     break; 
    } //End while 

    cvReleaseCapture (&capture); 
    cvDestroyWindow("canny"); 
    return 0; 
} //End main 

我的代碼有問題嗎?我需要使用不同的攝像頭嗎?我超頻了Raspberry Pi;它可以簡單地處理與更好質量的相機流?

+1

RPi有它自己的SE網站==> http://raspberrypi.stackexchange.com/ – Jason

+0

謝謝,我不知道。我會在那邊問。我可以在這裏刪除它嗎? – crypto

回答

0

在Raspberry Pi上有known issues與攝像機,沸騰到USB處理。您可以嘗試升級到最新的內核,儘管目前爲止大多數修復都不會影響相機。

+0

謝謝你。我升級了,沒有任何效果,所以我想現在我會堅持使用質量較低的視頻。 – crypto

0

原因可能是您的相機吸取更多電流,導致Raspberry Pi無響應。檢查相機的電流額定值,並嘗試使用電流額定值不大於100 mAh的攝像機。

+1

或附加一個有效的usb集線器;) – mojjj

1

我認爲樹莓派限制其USB端口上的電流高達700  毫安,所以如果您的相機與700  毫安或更低,它應該工作正常。如果沒有,你應該購買一個帶電的USB集線器。我有一個Logitech C170相機,其電流額定值爲700  毫安,沒有電源的USB集線器就可以正常工作。

我想知道你是如何在你的Raspberry Pi上安裝OpenCV的,所以你可以在C/C++中使用它,如果你使用IDE來製作你的程序,我也想知道你是如何做到的。我已經搜索瞭如何做到這一點的教程,但我只找到了關於如何安裝OpenCV以使用它的教程。我需要使用C/C++,因爲我嘗試過Python,而且我認爲它對圖像處理來說非常慢。我正在使用Debian   6.0(Squeeze)操作系統。