【问题标题】:Raspberry Pi becomes unresponsive when running OpenCV运行 OpenCV 时,Raspberry Pi 变得无响应
【发布时间】:2013-01-08 18:04:18
【问题描述】:

我已经在我的 Raspberry Pi 上成功安装了 OpenCV,并且一直在玩弄一些简单的网络摄像头流、实时 canny-edge 检测等等,所有这些都使用基本的 C 和 C++ 代码。

但是,我正在使用的两个网络摄像头遇到问题。第一个,我坐过的一个非常基本、便宜的罗技,工作正常,但图像质量还有很多不足之处。但是当我切换到我的 Logitech 510c 相机时,图像会好很多,但 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

我的代码有问题吗?我需要使用不同的网络摄像头吗?我已经超频了树莓派;它不能用质量更好的相机处理流吗?

【问题讨论】:

标签: image-processing opencv webcam raspberry-pi


【解决方案1】:

我认为 Raspberry Pi 将其 USB 端口上的电流限制为最高 700 mA,因此如果您的相机以 700 mA 或更低的电流工作,它应该可以正常工作。如果没有,您应该购买有源 USB 集线器。我有一台额定电流为 700 mA 的 Logitech C170 摄像头,它在没有供电 USB 集线器的情况下也能正常工作。

我想知道你是如何在你的树莓派上安装 OpenCV 的,这样你就可以将它与 C/C++ 一起使用,如果你使用 IDE 来制作你的程序,我也想知道你是怎么做的。我已经搜索了如何执行此操作的教程,但我只找到了如何安装 OpenCV 以将其与 Python 一起使用的教程。我需要使用C/C++,因为我尝试过Python,我认为它对于图像处理来说真的很慢。我使用的是 Debian 6.0 (Squeeze) 操作系统。

【讨论】:

    【解决方案2】:

    在 Raspberry Pi 上有带摄像机的 known issues,归结为 USB 处理。您可以尝试升级到最新内核,尽管到目前为止大多数修复都没有影响相机。

    【讨论】:

    • 谢谢。我已经升级了,没有任何效果,所以我想我现在会坚持使用质量较低的视频。
    【解决方案3】:

    原因可能是您的相机消耗更多电流,导致 Raspberry Pi 无响应。检查相机的额定电流,并尝试使用额定电流不大于 100 mA 的相机。

    【讨论】:

    • 或附加一个有效的 USB 集线器 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多