使用 OpenCV 捕获图像 - 选择超时错误

Posted

技术标签:

【中文标题】使用 OpenCV 捕获图像 - 选择超时错误【英文标题】:Image Capture with OpenCV - Select Timeout Error 【发布时间】:2016-05-17 10:24:11 【问题描述】:

我想保存从我的网络摄像头附加的 BeagleBone Black 捕获的图像,但是当我运行以下代码时,我收到错误:选择超时。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/videoio.hpp"

using namespace std;
using namespace cv;

int main()



        cout<< "Hello, OpenCV version: "<< CV_VERSION << endl;


        Mat frame;
        VideoCapture cap(0);


        cap.set(CV_CAP_PROP_FRAME_WIDTH , 320);
        cap.set(CV_CAP_PROP_FRAME_HEIGHT , 240);

        cap >> frame;

        imwrite("camCap.jpg", frame);

        return 0;

当我编译和运行代码时:

root@beaglebone:/home/iroh/test# g++ test.cpp -lopencv_core -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -o test
root@beaglebone:/home/iroh/test# ./test
Hello, OpenCV version: 3.1.0
select timeout
OpenCV Error: Assertion failed (total() == 0 || data != NULL) in Mat, file /home/iroh/Downloads/opencv-3.1.0/modules/core/include/opencv2/core/mat.inl.hpp, line 410
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/iroh/Downloads/opencv-3.1.0/modules/core/include/opencv2/core/mat.inl.hpp:410: error: (-215) total() == 0 || data != NULL in function Mat

Aborted

导致该问题的原因可能是什么?

根据错误输出,我的框架是空的。这是我第一次将这个网络摄像头连接到 BeagleBone Black。它可以在我的 PC 上正常运行,但我不知道它是否可以与 BeagleBone Black 一起成功运行。

这里是 dmesg 输出:

[ 4276.642456] usb 1-1: new high-speed USB device number 2 using musb-hdrc
[ 4277.411212] usb 1-1: New USB device found, idVendor=1e4e, idProduct=0110
[ 4277.411257] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4277.411284] usb 1-1: Product: USB2.0 Camera
[ 4277.411310] usb 1-1: Manufacturer: Etron Technology, Inc.
[ 4277.532768] uvcvideo: Found UVC 1.00 device USB2.0 Camera (1e4e:0110)
[ 4277.542871] input: USB2.0 Camera as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1:1.0/input/input1
[ 4277.547293] usbcore: registered new interface driver uvcvideo
[ 4277.547322] USB Video Class driver (1.1.1)

我该怎么办?

谢谢!

【问题讨论】:

【参考方案1】:

我遇到了同样的问题并设法解决了它。 检查我的答案here

【讨论】:

【参考方案2】:

我遇到了同样的问题,我猜你的工作环境是 Ubuntu 系统。 我更改了我的虚拟机设置“USB2.0 -> USB3.0”。

希望对你有帮助!

【讨论】:

以上是关于使用 OpenCV 捕获图像 - 选择超时错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV - 在捕获循环中没有显示没有等待键的图像[重复]

在 Raspberry 上的 python 中,opencv 的分段错误

从网络摄像机捕获实时图像

OpenCv - 从网络摄像头捕获帧时发生内存泄漏

捕获海康威视IPCamera图像,转成OpenCV能够处理的图像

捕获海康威视IPCamera图像,转成OpenCV能够处理的图像