【opencv试用小记,视觉识别图形】-Arduino中文社区 - Powered by Discuz! Archiver

pz_cloud 发表于 2015-6-14 14:32

【opencv试用小记,视觉识别图形】

本帖最后由 pz_cloud 于 2015-6-14 19:26 编辑

这两天赶制一个新项目,需要用上opencv来处理图像。由于要求使用嵌入式设备实现,自然首先想到了树莓派,pi众多开源的资源当然是提供了不少便利,然而尝试过后发现pi的性能对于图像处理实在是存在很大瓶颈。。
我使用的是一代的B+,摄像头720p分辨率下大概10s钟才能刷新一帧,这感人的速度实在让我无所适从。。于是回头寻找别的平台代替,考虑过树莓派2,伽利略,爱迪生以及一些国产板子像pcduino,香蕉派等,要么还是性能不太够,要么板子不够漂亮小巧。。无奈之下原本打算直接基于安卓开发了,毕竟今天的手机即便是比较便宜的型号,相对于那些开发板来说性能也非常强悍了
。然后上tb搜寻比较便宜小巧的安卓设备,就发现了有种叫安卓电视棒的东西,四核1.4ghz+2G ram,真是深得我心啊(。◕ˇ∀ˇ◕)~

其实这种安卓电视棒在几年前还是比较流行的,而国产的亲民价格也是它们很大的一个优势。买回来之后折腾了一阵,各种刷机换系统,然后发现其实这个还可以运行linux的,很早之前就有人在比较老的全志A10板子上移植过linux。现在的板子当然更新换代性能也更强了,但总之说明在这小小的电视棒上运行linux是可行的。整个系统安装过程比较复杂繁琐,由于还涉及到编译内核,这篇文章就不详细介绍了,之后要是有空的话再另开帖子介绍。

最后的效果是,棒子上预装了安卓4.4和ubuntu的双系统,其中linux文件系统是安装在sd卡上而安卓是安装在内置flash,所以在插入sd卡启动的时候会进入linux而不插卡的话就是进入安卓。
---------------------------------------------------------------------------------------------------------------------------------
以下是介绍linux上opencv的使用,这部分对树莓派的debian也是通用的
首先是opencv的安装,最简便的方法当然是通过apt自动安装,登陆树莓派后输入以下指令就行:
sudo apt-get install python-opencv libopencv-core-dev
这里我们是使用python来开发,当然opencv是支持众多语言的,python应该是最简单的一个了。上面的语句只是安装了必要的核心库所以会很快,安装好之后先测试下摄像头硬件是否连接正确:
这里推荐使用一般的USB摄像头而不是树莓派自己的CSI摄像头,因为目前在python的opencv库中还不能直接读取CSI摄像头,使用一般电脑用的普通USB摄像头就够了。为了测试摄像头是否正常我们安装一个软件luvcview
sudo apt-get install luvcview
完成后插入摄像头,进入GUI桌面(命令行下startx),打开模拟终端输入luvcview就行了,正常的话应该会弹出视频的预览窗口。
确认没问题后开始尝试opencv,在桌面新建一个文档,保存为opencv.py,里面输入以下内容:

import cv2
camera = cv2.VideoCapture(0)
while True:
    img = camera.read()
    cv2.imshow('Face',img)
保存之后在终端输入python “你文件的路径” (没有引号)就可以运行了,这里说一下在GUI桌面下如果觉得输入路径很麻烦可以直接把文件拖进终端窗口,路径就自动生成出来了。

这几行就实现了读取摄像头和显示图像,是不是很方便呢,在获取了图像帧之后可以自行对图像进行各种处理,在opencv中进行图像的特征提取或者人脸识别都非常方便,这些大家可以自己搜索到很多资料。

最后给一个使用opencv检测正方形和圆形的效果视频,显示检测到的图像并给出图像面积,视频中使用windows自带的远程桌面演示,后面手机上的远程桌面是使用安卓VNC 。这里说明一下由于演示的时候是用wifi传输远程桌面所以会显得比较卡顿,事实上外接显示器的话还是挺流畅的。


http://v.youku.com/v_show/id_XMTI2MTkxNzAzNg==.htm
http://v.youku.com/v_show/id_XMTI2MTkxNzAzNg==.html


henrypcw 发表于 2015-6-14 15:42

果断收藏,请楼主详细说说如何吧系统刷入SD卡?哪里下载相应的linux系统?
有自带蓝牙吗?
谢谢!!!

努力微笑 发表于 2015-6-14 18:48

可以详细一些吗

黑色金沙 发表于 2015-6-14 19:08

如果wifi卡顿的这么严重,那用在远程监控啊,图像识别方面的效果就无法忍受啊。

pz_cloud 发表于 2015-6-14 19:16

本帖最后由 pz_cloud 于 2015-6-14 19:36 编辑

henrypcw 发表于 2015-6-14 15:42
果断收藏,请楼主详细说说如何吧系统刷入SD卡?哪里下载相应的linux系统?
有自带蓝牙吗?
谢谢!!! ...
SD卡只是作为硬盘储存linuxroot文件系统,至于怎么安装,可以把你喜欢的任何linux发行版安装上去,当然由于性能有限不像pc机,一般都会选择比较轻量级的比如xubutu,lubuntu。蓝牙是没有的,wifi本来也没有,linux下设备的驱动都需要自己编译进内核,而且不同机器的内核都是不通用的,所以是个很繁琐的过程。进入linux系统的原理是,用linux的kenel取代原本安卓的recovery刷入分区,这样在安卓系统下重启进入recovery模式的话,就会进入到linux系统

pz_cloud 发表于 2015-6-14 19:19

本帖最后由 pz_cloud 于 2015-6-14 19:20 编辑

黑色金沙 发表于 2015-6-14 19:08
如果wifi卡顿的这么严重,那用在远程监控啊,图像识别方面的效果就无法忍受啊。 ...
这是远程桌面哦不是传输视频,传输视频的话wr703n仅400mhz的主频都已经可以非常流畅了,可以看我这个贴里的效果http://www.arduino.cn/thread-6270-1-1.html
我这里只是演示opencv的处理效果啦,真的需要网路传送图像的话是另外一回事了。而且远程监控的ip摄像头现在都很成熟了也到处都在用哦,便宜的才几十块钱。

黑色金沙 发表于 2015-6-16 21:33

远程桌面那就可以理解了。

zhuwenjin 发表于 2015-12-8 18:14

:lol楼主牛

moment 发表于 2016-2-6 12:48

我的debian只有guvcview

moment 发表于 2016-2-6 12:59

换科大的源后有了
页: [1] 2
查看完整版本: 【opencv试用小记,视觉识别图形】