查看: 24140|回复: 32

Edison上安装opencv+ 调用摄像头存储图片

[复制链接]

该用户从未签到

发表于 2015-1-26 18:48 | 显示全部楼层 |阅读模式
本帖最后由 deanlan 于 2015-3-6 12:29 编辑

1.在Intel社区中下载最新的OS镜像更新你的主板
输入reboot ota 回车进行系统升级
2.使用Opkg安装opencv包  
2.1  AlexT  介绍了一中方法 通过opkg连接他自己的 repo  .(上一篇Intel Edison 使用opkg 安装cmake 中讲了如何配置 edison (Intel Edison使用opkg安装应用 cmake)      

Edison 的opkg的宝库   (AlexT)
http://repo.opkg.net/edison/repo/  

2.2   在putty 中运行 "opkg install opencv-dev"
       这样在edison上opencv的环境基本算搭建完成。

3.uvc 视频核模块。在putty中运行" opkg install kernel-module-uvcvideo "  (进入putty 的步骤你需要看前面的快速开始指南)
值得注意的是早期的镜像为yocto1.6 里面是没有ucv 模块的,而最新发布的yocto1.6.1 里面是含有ucv 模块的,这里是不要装uvcvideo 模块 的,如果装了ucv 模块,系统会显示没有足够的磁盘空间了。。。intel 真是深坑啊!!!
4.找到一个网络摄像头(webcam,摄像头是支持uvcvideo 模块的。(其中之一 UVC Linux 驱动程序和工具
5.将摄像头连接到edison 大的USB 口,靠近电源连接器,确保它附近的机械开关拨向USB口这端。(这是arduino 扩展板)
连接好摄像头之后,运行在putty中运行 "modprobe uvcvideo"  载入指定的uvc 模块和ucv 相依的关系,然后 “lsmod” 系统会显示 目前已经存在于内核中的模块,如果看到下面的显示说明ucv模块成功了。
lsmod.jpg
6.写一个opencv 的程序 。不要用到了GUI,因为Edison上的版本没有GUI支持,把代码中所有跟窗口有关的都注释掉,反正在Edison没用,用了也报错(感谢秋纫大神)
下面是我自己写的一个简单程序 (我将它保存为lanfeng.cpp):



#include <stdio.h>
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/legacy/legacy.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/photo/photo.hpp"

using namespace std;

int main()
{
IplImage *frame = NULL;
int num = 0;
int key;
CvCapture *input_camera = cvCaptureFromCAM(-1);
frame = cvQueryFrame(input_camera);
while(frame != NULL)
{
num++;
cout<<"i see u "<<endl;

frame = cvQueryFrame(input_camera);

if(num ==10)
{
         cvSaveImage("lanfeng.png",frame);
}
}
cvReleaseCapture(&input_camera);
return 0;
}

使用winscp在 /home/root 中新建一个文件夹 opencv   (使用winscp的方法参考 社区中[url=http://www.arduino.cn/thread-9054-1-1.html]Edison升级_与编程环境的搭建 Eclipse 篇[/url],这篇文章)
将刚刚写好的lanfeng.cpp 复制到/home/root/opencv 中。

7. 在edison上直接编译。
   在putty 中 "cd /home/root/opencv " 进入程序所在文件夹 (working directory)
   编译文件”g++  lanfeng.cpp -o lanfeng -lopencv_core  -lopencv_highgui  -lopencv_video“ 如果不报错,说明编译成功
   这里我使用 编译选项只加了core和highgui 和video三个模块以后用到opencv的其它模块,就相应加上编译选项行了
                   11.jpg
    这里我使用”g++  lanfeng.cpp -o lanfeng `pkg-config  --cflags --libs opencv`“  编译失败了,存在一个问题。
                   12.jpg

   编译成功后,运行程序  ( in the working directory ):
              ” ./lanfeng  “


                   13.jpg

  将摄像头插入usb插口的时候可以 ”dmesg -c“ 看看内核是否发现你的设备。
  运行成功之后可以看到在 /home/root/opencv 中新增一张 ”lanfeng.png“  图片。
                  14.jpg

   图片截屏:

                lanfeng.png




到这里在edison上跑opencv的简单程序结束。


            
   
   













  • TA的每日心情
    开心
    2015-9-22 09:46
  • 签到天数: 272 天

    [LV.8]以坛为家I

    发表于 2015-1-27 06:48 | 显示全部楼层
    高人,是浙江的吗?有空可以跑去找你学习点!

    该用户从未签到

    发表于 2015-1-30 23:08 | 显示全部楼层
    编译有问题啊
    root@edison:~/opencv# g++ opencvideo.cpp -o opencvideo -lopencv_core -lopencv_vi
    deo
    opencvideo.cpp:3:30: fatal error: opencv2/opencv.hpp: No such file or directory
    #include "opencv2/opencv.hpp"
                                  ^
    compilation terminated.
    root@edison:~/opencv# B亮?
                               -sh: B亮? not found
    root@edison:~/opencv#                               ^
    -sh: ^: not found
    root@edison:~/opencv# compilation terminated.
    -sh: compilation: not found
    root@edison:~/opencv# root@edison:~/opencv#
  • TA的每日心情
    郁闷
    2015-11-7 16:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-3-2 08:42 | 显示全部楼层
    高人有qq吗 求一对一辅导
  • TA的每日心情
    郁闷
    2015-11-7 16:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-3-12 09:08 | 显示全部楼层
    编译运行了以后没反应怎么破啊楼主

    该用户从未签到

     楼主| 发表于 2015-3-12 09:14 | 显示全部楼层
    0cean 发表于 2015-3-12 09:08
    编译运行了以后没反应怎么破啊楼主

    编译通过之后。。运行的时候摄像头会亮。图片会有保存,终端上显示 i see u 。 看看是不是板子上的开关没有拨向大的USB端。
  • TA的每日心情
    郁闷
    2015-11-7 16:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-3-12 09:18 | 显示全部楼层
    deanlan 发表于 2015-3-12 09:14
    编译通过之后。。运行的时候摄像头会亮。图片会有保存,终端上显示 i see u 。 看看是不是板子上的开关没 ...

    开关拨了   摄像头是模拟摄像头  接在一个采集器上面的,采集器接到edison上的  用lsusb可以看到摄像头
  • TA的每日心情
    郁闷
    2015-11-7 16:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-3-12 09:26 | 显示全部楼层
    摄像头是识别了的
    Untitled.png

    该用户从未签到

     楼主| 发表于 2015-3-12 09:42 | 显示全部楼层
    Linux UVC driver & tools你的摄像头可能不支持ucv模块。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    ESP8266电池供电如何接线?
    ESP8266电池供电如何接线
    小白一枚,最近捣腾ESP8266-12F[/backcolor],在烧录架上烧录好Blinker程序是正常运行
    莫斯精灵
    莫斯精灵
      在抗战和谍情影片中无线电台发出的嘀嘀嗒嗒声大家一定印象深刻吧?其实就是将信
    AM广播环境监测仪
    AM广播环境监测仪
    #描述 之前在论坛看到一个帖子,可以让UNO产生1MHz-AM 调幅波并短距离发送电报。
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表