讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头
讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头
首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了。
主要问题是如何让opencv能够调用摄像头。
首先将摄像头插入4412开发板里面的HOST接口,如果有多个USB设备,可以使用USB分线器。
注意:我使用OTG口连接USB设备都无法识别(ARM版的Ubuntu)。
注意:热插拔有时候会不灵,所以需要重启一下开发板。
使用
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几)。用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之类的)后回车就可以看到是否为想要使用的摄像头。在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摄像头相关推荐
- linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法
本文档介绍迅为4412开发板的显卡分辨率修改方法. iTOP-4412 开发板支持 4.3 寸.7 寸和 9.7 寸等 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 ...
- 《转载》iTOP-4412开发板如何配置可以支持 AVIN 的摄像头
本文转自:http://www.topeetboard.com/ 更多了解:https://arm-board.taobao.com/ 内核目录下执行命令"make menuconfig&q ...
- 讯为itop4412开发板触摸屏调试
由于不同触摸屏的xy坐标会有不同,有时候xy坐标需要反过来.下面的代码会告诉你怎样调整xy坐标. 代码分析 驱动位置:drivers/input/touchscreen/ft5x06_ts.c sta ...
- 【原创】IP摄像头技术纵览(一)---linux 内核编译,USB摄像头设备识别
IP摄像头技术纵览(一)- linux 内核编译,USB摄像头设备识别 开始正文之前先来认识一下我的开发环境: 系统:ubuntu 10.04 开发板:AT91SAM9260 + Linux-2.6. ...
- linux内核剪裁 4412,itop4412开发板-Linux内核的编译
本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘"06_源码_uboot 和 kernel"目录下,如下图所示. 5.3.2.2 编译器 内核 ...
- linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程
学习下 linux 数模程序驱动的编写,本节我们实现的功能是实现三路 ADC 数模转换. 驱动程序 驱动程序的名字:"itop4412_adc.c". 要想把这个驱动注册到内核,先 ...
- iTOP-4412开发板驱动lcd显卡以及linux开机log的修改方法
iTOP-4412 开发板 LCD 的屏幕驱动,iTOP-4412 开发板支持 4.3寸,7 寸,9.7 寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 ...
- 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...
- Friendly ARM开发板安装Linux系统教程
友善之臂ARM9开发板安装Linux系统教程 前言:智能蘑菇房项目的运行环境是友善之臂ARM9开发板,所以需要在上面灌一个linux系统,下面我来简单介绍一下. 准备 读卡器 SD卡 串口线一根(US ...
最新文章
- 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
- matlab 矩阵拼接
- 工厂电子产品工艺文件_建智能工厂,人机如何达到最佳组合?
- 开发中遇到的Cause: java.sql.SQLException: connection holder is null的异常
- 仿QQ聊天室【方案】
- Jar 包依赖冲突排查思路和解决方法(logback + slf4j-log4j12)
- 通俗易懂的信息熵与信息增益(IE, Information Entropy; IG, Information Gain)
- 数据库更新DATE类型的时间
- 【设计模式】11、享元模式
- QT下的音乐播放器 (一)
- html特使数字符号,特殊符号大全
- 威廉玛丽大学计算机本科专业,威廉玛丽学院本科专业有哪些?
- 只因写了一段爬虫,公司200多人被抓!
- 在线考试系统总体设计
- Markdown KeTex 德尔塔等于符
- 已经无力吐槽 vcpkg
- 第二章:解决LuckySheet 使用生成图表的时候发生 h.createChart is not a function错误
- 可见性,原子性,有序性的源头(一)
- UVa 紫书50题留念
- java调起喇叭,【音响知识】调音不求人 教你五步轻松调出好声音