讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头

首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了。
主要问题是如何让opencv能够调用摄像头。
首先将摄像头插入4412开发板里面的HOST接口,如果有多个USB设备,可以使用USB分线器。
注意:我使用OTG口连接USB设备都无法识别(ARM版的Ubuntu)。
注意:热插拔有时候会不灵,所以需要重启一下开发板。

  1. 使用dmesg命令来识别出USB设备名:dmesg | grep video

    root@iTOP4412-ubuntu-desktop:/home/linaro/Desktop# dmesg | grep video
    [    3.941830] Linux video capture interface: v2.00
    [    5.180789] s5p-mixer s5p-mixer: registered layer mxr0_video0 as /dev/video20
    [    5.187891] fb5: registered frame buffer emulation for /dev/video20
    [    5.194121] s5p-mixer s5p-mixer: registered layer mxr0_graph0 as /dev/video16
    [    5.201257] fb6: registered frame buffer emulation for /dev/video16
    [    5.207492] s5p-mixer s5p-mixer: registered layer mxr0_graph1 as /dev/video17
    [    5.214622] fb7: registered frame buffer emulation for /dev/video17
    [    5.252875] s5p-jpeg s5p-jpeg: JPEG driver is registered to /dev/video12
    [    5.259465] s5p-jpeg s5p-jpeg: JPEG driver is registered to /dev/video11
    [    5.304124] usbcore: registered new interface driver uvcvideo
    [    8.467898] uvcvideo 1-3.3.4:1.0: usb_probe_interface
    [    8.467992] uvcvideo 1-3.3.4:1.0: usb_probe_interface - got id
    [    8.468185] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (1908:2310) 

    在终端使用dmesg | grep video命令,可以看到4412能够成功识别出UVC摄像头,但是这个时候我们还不能看出摄像头被放在哪个位置(即/dev/video几)。

  2. 用opencv的一个程序来手动判断摄像头在哪个位置

    
    #include <opencv2/highgui/highgui.hpp>  #include <opencv2/imgproc/imgproc.hpp>  #include <opencv2/core/core.hpp>  #include <stdio.h>  using namespace cv;
    int main()
    {  int camera;scanf("%d",&camera);printf("opening camera:%d\n",camera);VideoCapture cap(camera); printf("success open camera:%d\n",camera); if(!cap.isOpened())  {  printf("Do not open!\n");return -1;  }  Mat frame;  Mat edges;  bool stop = false;  while(!stop)  {  cap>>frame;  cvtColor(frame, edges, CV_BGR2GRAY);  GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);  Canny(edges, edges, 0, 30, 3);  imshow("当前视频",edges);  if(waitKey(30) >=0)  stop = true;  }  return 0;
    }  

    编译程序(交叉编译opencv可以看我另一篇文章):gcc shexiantou.cpp -o shexiantou -lpthread -lrt `pkg-config --libs --cflags opencv`
    调整使用权限:chmod 777 sheixantou
    在4412里面的Ubuntu里的终端里面运行(记得先运行cd命令到程序目录):./shexiantou
    运行后会要求输入video的数字,输入想要测试的数字(即/dev/video0之类的)后回车就可以看到是否为想要使用的摄像头。

  3. 在OPENCV里面调用摄像头

    在上面的程序可以看到,opencv可以调用特定的摄像头,但是需要特定的语句即VideoCapture cap(camera);//camera是一个int型变量,也可以直接用数字
    注意cvCaptureFromCAM(0)是无法调用特定的摄像头的,只有默认0和外置-1两种选择。
    从原本的CvCapture* pCapture = cvCaptureFromCAM(0);代码转变为VideoCapture之后,一些语句也需要进行相应的变化,不然编译会报错。
    例如原先的

    Mat frame;  // 输入视频帧序列
    IplImage* temp= cvQueryFrame( pCapture );
    frame = cvarrToMat(temp) ;// 从摄像头中获取新的一帧

    要变为

    Mat frame;  // 输入视频帧序列
    cap >> frame; // 从摄像头中获取新的一帧

讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头相关推荐

  1. linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法

    本文档介绍迅为4412开发板的显卡分辨率修改方法. iTOP-4412 开发板支持 4.3 寸.7 寸和 9.7 寸等 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7  ...

  2. 《转载》iTOP-4412开发板如何配置可以支持 AVIN 的摄像头

    本文转自:http://www.topeetboard.com/ 更多了解:https://arm-board.taobao.com/ 内核目录下执行命令"make menuconfig&q ...

  3. 讯为itop4412开发板触摸屏调试

    由于不同触摸屏的xy坐标会有不同,有时候xy坐标需要反过来.下面的代码会告诉你怎样调整xy坐标. 代码分析 驱动位置:drivers/input/touchscreen/ft5x06_ts.c sta ...

  4. 【原创】IP摄像头技术纵览(一)---linux 内核编译,USB摄像头设备识别

    IP摄像头技术纵览(一)- linux 内核编译,USB摄像头设备识别 开始正文之前先来认识一下我的开发环境: 系统:ubuntu 10.04 开发板:AT91SAM9260 + Linux-2.6. ...

  5. linux内核剪裁 4412,itop4412开发板-Linux内核的编译

    本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘"06_源码_uboot 和 kernel"目录下,如下图所示. 5.3.2.2 编译器 内核 ...

  6. linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程

    学习下 linux 数模程序驱动的编写,本节我们实现的功能是实现三路 ADC 数模转换. 驱动程序 驱动程序的名字:"itop4412_adc.c". 要想把这个驱动注册到内核,先 ...

  7. iTOP-4412开发板驱动lcd显卡以及linux开机log的修改方法

    iTOP-4412 开发板 LCD 的屏幕驱动,iTOP-4412 开发板支持 4.3寸,7 寸,9.7 寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 ...

  8. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  9. Friendly ARM开发板安装Linux系统教程

    友善之臂ARM9开发板安装Linux系统教程 前言:智能蘑菇房项目的运行环境是友善之臂ARM9开发板,所以需要在上面灌一个linux系统,下面我来简单介绍一下. 准备 读卡器 SD卡 串口线一根(US ...

最新文章

  1. 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
  2. matlab 矩阵拼接
  3. 工厂电子产品工艺文件_建智能工厂,人机如何达到最佳组合?
  4. 开发中遇到的Cause: java.sql.SQLException: connection holder is null的异常
  5. 仿QQ聊天室【方案】
  6. Jar 包依赖冲突排查思路和解决方法(logback + slf4j-log4j12)
  7. 通俗易懂的信息熵与信息增益(IE, Information Entropy; IG, Information Gain)
  8. 数据库更新DATE类型的时间
  9. 【设计模式】11、享元模式
  10. QT下的音乐播放器 (一)
  11. html特使数字符号,特殊符号大全
  12. 威廉玛丽大学计算机本科专业,威廉玛丽学院本科专业有哪些?
  13. 只因写了一段爬虫,公司200多人被抓!
  14. 在线考试系统总体设计
  15. Markdown KeTex 德尔塔等于符
  16. 已经无力吐槽 vcpkg
  17. 第二章:解决LuckySheet 使用生成图表的时候发生 h.createChart is not a function错误
  18. 可见性,原子性,有序性的源头(一)
  19. UVa 紫书50题留念
  20. java调起喇叭,【音响知识】调音不求人 教你五步轻松调出好声音

热门文章

  1. Android:设计模式-策略模式-关于Logger日志工具的使用
  2. psd缩略图生成上传解决方案
  3. 今天偶然发现一个各种模板都比较好看的网站(包含简历),关键免费下载,推荐给大家
  4. Java ArrayList中retainAll()方法具有什么功能呢?
  5. zbrush插件布尔运算插件perfectbool安装方法
  6. 腰 相关 (come from hoopchina。。thanks)
  7. 学计算机激励标语口号,激励学习标语
  8. Python实现冰雹猜想(折线图)
  9. 软件工程之工程网络例题详解
  10. 灯光篇之一【环境光AmbientLight】