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

讯为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; // 从摄像头中获取新的一帧
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Linux系统烧写到itop4412开发板上,可以按照以下步骤进行操作: 1. 准备所需材料:一台运行Linux的主机、itop4412开发板USB数据线、SD卡读卡器。 2. 下载Linux系统镜像:从官方网站或其他可靠来源下载适用于itop4412开发板Linux系统镜像文件。 3. 将SD卡格式化:使用SD卡读卡器将SD卡连接到主机上,使用磁盘工具将其格式化为FAT32文件系统。 4. 将Linux系统镜像写入SD卡:使用磁盘工具将下载的Linux系统镜像写入SD卡。可以使用命令行工具如dd或者图形界面工具如Etcher来完成烧写操作。 5. 插入SD卡到itop4412开发板:将烧写好Linux系统的SD卡插入itop4412开发板的SD卡槽中。 6. 连接itop4412开发板到主机上:使用USB数据线将itop4412开发板连接到主机上。确保连接稳定并能被主机识别到。 7. 进入开发板的烧写模式:按下itop4412开发板上的烧写模式按钮,或者根据开发板的说明文档进行设置,使其进入烧写模式。 8. 在主机上进行烧写操作:使用烧写工具(如rkdeveloptool或者fastboot等)在主机上执行相应的烧写命令,将Linux系统镜像写入itop4412开发板的启动介质(一般是eMMC或者SD卡)。 9. 完成烧写:等待烧写完成,并确保没有报错信息出现。 10. 断开连接并启动itop4412开发板:断开连到主机的USB数据线。按下开发板上的重启按钮或者重新上电,itop4412开发板将会启动并运行烧写好的Linux系统。 尽管这些步骤可以作为一个参考,但为了确保顺利烧写Linux系统,建议查阅相关的官方文档和开发板的说明书,并根据具体情况进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值