OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 5937|回复: 6

求助!关于在ARM上使用opencv无法打开摄像头的问题

[复制链接]
发表于 2015-3-19 10:02:11 | 显示全部楼层 |阅读模式
我用的是红帽系统(ubantu和fedora都试过,都可以),opencv2.3.1的库,arm-linux-gcc4.3.2的工具链,QT4.7的环境。在PC机上,运行cvcapture的程序时,能打开摄像头,并且在QLabel上显示。但是当我交叉编译放到ARM11板子上时,就会闪退。显示not found camera(这一句是我自己设的调试信息)
segmentation fault

明明我插上摄像头了,却不能识别,而且出现段错误,有哪位高手能帮忙看看怎么回事,不胜感谢!
以下是我的程序:
dialog.h
  1. #ifndef DIALOG_H

  2. #define DIALOG_H

  3. #include <QDialog>

  4. #include <cv.h>

  5. #include <highgui.h>

  6. #include <QTimer>

  7. #include <QPixmap>


  8. namespace Ui {

  9.     class Dialog;

  10. }


  11. class Dialog : public QDialog

  12. {

  13.     Q_OBJECT


  14. public:

  15.     explicit Dialog(QWidget *parent = 0);

  16.     ~Dialog();


  17. private:

  18.     Ui::Dialog *ui;


  19.     CvCapture *capture; //highgui 里提供的一个专门处理摄像头图像的结构体

  20.     IplImage *frame; //摄像头每次抓取的图像为一帧,使用该指针指向一帧图像的内存空间


  21.     QTimer *timer; //定时器用于定时取帧,上面说的隔一段时间就去取就是用这个实现。


  22. private slots:

  23.     void getFrame(); //实现定时从摄像头取图并显示在label上的功能。

  24. };


  25. #endif // DIALOG_H
复制代码
dialog.cpp

  1. #include "dialog.h"

  2. #include "ui_dialog.h"

  3. #include <QDebug>


  4. Dialog::Dialog(QWidget *parent) :

  5.     QDialog(parent),

  6.     ui(new Ui::Dialog)

  7. {

  8.     ui->setupUi(this);

  9.     timer = new QTimer(this);

  10.     capture = cvCaptureFromCAM(0); //cvCaptureFromCAM其实是一个宏,就是cvCreateCameraCapture的别名,0代表第一个摄像头。-1代表默认摄像头。

  11.     if(capture==NULL){

  12.         qDebug()<<"not found camera!!";

  13.     }

  14.     timer->start(50); //1000为1秒,50毫秒去取一帧

  15.     connect(timer,SIGNAL(timeout()),this,SLOT(getFrame())); //超时就去取

  16. }


  17. void Dialog::getFrame()

  18. {

  19.     frame = cvQueryFrame(capture); //从摄像头取帧

  20.     QImage image = QImage((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888).rgbSwapped(); //简单地转换一下为Image对象,rgbSwapped是为了显示效果色彩好一些。

  21.     ui->label->setPixmap(QPixmap::fromImage(image));


  22. }


  23. Dialog::~Dialog()

  24. {

  25.     timer->stop(); //停止取帧

  26.     cvReleaseCapture(&capture); //释放资源是个好习惯

  27.     delete ui;

  28. }
复制代码




回复

使用道具 举报

发表于 2016-1-6 15:49:01 | 显示全部楼层
同样无法打开摄像头
回复 支持 反对

使用道具 举报

发表于 2016-1-12 22:15:22 | 显示全部楼层
很多摄像头都无法打开,是驱动问题。我只成功的打开过那种最便宜的视频摄像头。
回复 支持 反对

使用道具 举报

发表于 2016-3-4 10:30:43 | 显示全部楼层
ARM内核编译设置里头添加V4L2摄像头支持
回复 支持 反对

使用道具 举报

发表于 2016-4-16 19:29:53 | 显示全部楼层
把函数cvCaptureFromCAM的参数设为202试试
回复 支持 反对

使用道具 举报

发表于 2016-4-26 10:06:29 | 显示全部楼层
先测试摄像头,cheese或者luvcview工具
回复 支持 反对

使用道具 举报

发表于 2018-8-21 20:33:48 | 显示全部楼层
你好,你的这个段错误解决了吗,方便的话,加个QQ294383344,一起交流下
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-5-26 05:04 , Processed in 0.027458 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表