让CubieBoard连接摄像头(Ubuntu系统) | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

让CubieBoard连接摄像头(Ubuntu系统)

点滴 admin 11年前 (2014-03-10) 2364次浏览 已收录 扫描二维码

效果:
http://player.youku.com/player.php/sid/XNTQyODU5NTAw/v.swf
论坛上已经有人发了(http://cn.cubieboard.org/forum.php?mod=viewthread&tid=283),不过不是在Ubuntu上,命令也不同,上面写的yum改apt-get找不到包
咋办?!
系统最好使用cubie官方的1.1版本系统,地址dl.cubieboard.com(第三方固件需要安装python-numpy,用apt-get)
其实弄这个不难,首先运行:

  1. sudo apt-get install python-opencv -y

复制代码

等待安装完成,插入usb摄像头
接着,复制camera.py文件到根目录
下载: 让CubieBoard连接摄像头(Ubuntu系统) camera.zip (376 Bytes, 下载次数: 55)
确定/dev/video0是你的摄像头,如果你的摄像头是video1之类的,请修改camera.py,把

  1. capture = cv.CaptureFromCAM(0)

复制代码

改成

  1. capture = cv.CaptureFromCAM(1)

复制代码

然后

  1. chmod +x /camera.py
  2. /camera.py

复制代码

提示:上面这个命令不要在SSH或TTL里运行,因为这个没屏幕
然后你会发现一个叫camera的窗口跳出来了~~

注释:有人说用这个会卡,CPU占用率飙升,我告诉大家原因,不是软件不好,而是循环
我们打开py文件,一段代码如下:

  1. while True:
  2. img = cv.QueryFrame(capture)
  3. cv.ShowImage(“camera”, img)

复制代码

这个py用while循环去获取图片,而while循环去做这种动作必定会造成卡的现象,所以大家可以换成定时之类的,如0.5秒一次,这样就好了

现在摄像头的图像就显示到了板子上,唯一的缺点就是usb口太少了,一下只能插摄像头+键盘或鼠标

大家可以买集线器,1对4的,这样就好多了

camera.py 有个地方缩进有误,在16行“break”
正确的是

  1. if cv.WaitKey(10) == 27:
  2. print “Exit”
  3. break
  4. cv.DestroyAllWindows()

复制代码

确实有缩进有点小问题,没学过python,但前后再次用控制变量法试出了正确的代码。

  1. #!/usr/bin/python
  2. import cv2.cv as cv
  3. import time
  4. print “Camera Test by TLL”
  5. print “Please use this program on your Terminal Emulator,not SSH or TLL”
  6. cv.NamedWindow(“camera”, 1)
  7. capture = cv.CaptureFromCAM(0)
  8. while True:
  9. img = cv.QueryFrame(capture)
  10. cv.ShowImage(“camera”, img)
  11. if cv.WaitKey(10) == 27:
  12. print “Exit”
  13. break
  14. cv.DestroyAllWindows();

复制代码

记得上次我不是这样改的,真后悔当初删了,害得现在要重试。
上传格式出了问题。还是上传文件好。
百度云链接:http://pan.baidu.com/share/link?shareid=1500949147&uk=4263399593 让CubieBoard连接摄像头(Ubuntu系统)

camera.py.zip

373 Byte

http://www.ideasonboard.org/uvc/


使用了下,发现不可以,下面是实测可以用的代码,供参考。

#!/usr/bin/python

import cv2.cv as cv
import time
print "Camera Test by TLL"
print "Please use this program on your Terminal Emulator,not SSH or TLL"
cv.NamedWindow("camera", 1)

capture = cv.CaptureFromCAM(1)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
        print "Exit"
        break
cv.DestroyAllWindows();

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。