淘宝看到一款很便宜的双目,150元,就买了。想着用它学习一下opencv,好换个工作。当然,也想着能否用它做一些好玩的,比如三维重建之类高大上的东西。先用便宜的入个门,等以后眼界高了再看是不是买那些更加精密的双目。不过目前来看,这个摄像头还是很不错的。

这个双目摄像头用win10自带的摄像头驱动可以完美的打开,支持它的各种比例和分辨率的视频显示。分辨率支持以下几种:

    16:9 1280x720
    4:3 640x480
    4:3 320x240
    8:3 1280x480
    8:3 640x240
    32:9 2560x720

   可是在win下面的使用anaconda环境+Python版本opencv 只能驱动显示单个摄像头,一旦更改双目的分辨率就会报错,网上找了好久资料也没解决,就一直用录制好的双目视频和双目照片来学习。

  这几天在家,就掏出吃灰已久的jetson TX2开发板试试,没想到完美运行。

  jetsonTX2为NVIDIA的人工智能开发板,网上有详细的介绍,也有丰富的资料和教程。

  使用本开发板时,要先刷机(这个过程很漫长......),我记得当时刷了好几遍,(有一次是没刷完我以为刷好了,所以要耐心等待。)然后安装各种环境,包括opencv、numpy等。

  安装opencv时要先装上cmake,然后使用这个里面的脚本安装,很方便:https://www.ncnynl.com/archives/201706/1760.html

  这个开发板只有一个USB口,所以要准备一个USB HUB。

插上双目后,使用  ls -la /dev/vid* 命令查看,当出现 /dev/video0 和 /dev/video1 两个摄像头时,说明识别正确。其中video1就是我们的双目,video0是板子自带的摄像头,可能我驱动没装好,自带的摄像头不能用。

  人脸检测使用Haar级联算法检测,所以需要用于人脸检测的XML文件。具体见 附件。解压后,替换程序中文件夹的绝对路径。

代码很简单:

 1 # -*- coding: utf-8 -*-
2 """
3 Created on Tue May 7 13:37:49 2019
4
5 @author: 执念执战
6 """
7 import cv2
8 camercapture=cv2.VideoCapture(1)#video1 为本双目摄像头
9
10 """
11 本双目支持的分辨率
12 16:9 1280x720
13 4:3 640x480
14 320x240
15 8:3 1280x480
16 640x240
17 32:9 2560x720
18 """
19 camercapture.set(3,1280) #设置分辨率
20 camercapture.set(4,480)
21 cv2.namedWindow('pic1')
22 cv2.namedWindow('pic2')
23 success,frame=camercapture.read() #得到原始图像
24 face_cascade=cv2.CascadeClassifier('/media/nvidia/Ubuntu-Kyli/Opencv/pycv-master/pycv-master/pycv-master/chapter5/cascades/haarcascade_frontalface_default.xml')
25 #Haar数据包的绝对地址,请更改为自己的地址
26
27 while True:
28 if cv2.waitKey(int(1000/30)) & 0xff == ord("q"): #按下 q 键退出
29 break
30 #cv2.imshow('Test',frame) #显示原始图像
31 pic1=cv2.cvtColor(frame[0:480,0:640],cv2.COLOR_BGR2GRAY) #将图像按照左右分割为两部分,并转化为灰度图
32 pic2=cv2.cvtColor(frame[0:480,640:1280],cv2.COLOR_BGR2GRAY)
33
34 faces1=face_cascade.detectMultiScale(pic1,1.3,5)#分别对左右两部分做人脸检测
35 faces2=face_cascade.detectMultiScale(pic2,1.3,5)
36 for (x,y,w,h) in faces1:
37 pic1=cv2.rectangle(pic1,(x,y),(x+w,y+h),(255,0,0),-1)#在灰度图上画出人脸区域,此处使用填充的矩形,遮挡人脸
38 for (x,y,w,h) in faces2:
39 pic2=cv2.rectangle(pic2,(x,y),(x+w,y+h),(255,0,0),-1)
40
41 cv2.imshow("pic1",pic1)#分别显示检测后的图像
42 cv2.imshow("pic2",pic2)
43 success,frame=camercapture.read()#获取下一帧的原始图像
44
45 cv2.destroyAllWindows()#销毁窗口
46 camercapture.release() #释放摄像头

运行效果如下:

原始图像也一起显示效果如下:

本文水平有限,内容很多词语由于知识水平问题不严谨或很离谱,但主要作为记录作用,能理解就好了,希望以后的自己和路过的大神对必要的错误提出批评与指点,对可笑的错误不要嘲笑,指出来我会改正的。

另外,转载使用请注明出处。

-------------随梦,随心,随愿,执念执战,执战苍天!

  

最新文章

  1. Android 常用代码
  2. Android应用开发-数据存储和界面展现(一)(重制版)
  3. JS 中 this上下文对象的使用方式
  4. ubuntu12 apache2部署多个网站的方法
  5. MAGENTO程序结构图
  6. 【NOIP模拟题】【二分】【倍增】【链表】【树规】
  7. DOS 命令大全
  8. URAL 2069 Hard Rock (最短路)
  9. adb remount 失败remount failed: Operation not permitted
  10. Phonegap3.4 教程
  11. [译]Stairway to Integration Services Level 18 – 部署和执行
  12. 也可以看看GCD(杭州电2504)(gcd)
  13. logstash+elasticsearch+kibana快速搭建日志平台
  14. 解决关于 在android studio 出现的 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK 问题
  15. SSH框架整合实现Java三层架构实例(一)
  16. SpringCloud学习1-服务注册与发现(Eureka)
  17. 出现error: stray ‘\357’ in program的根源
  18. 【Oracle】数据泵导入导出
  19. 2938: [Poi2000]病毒
  20. 禁用AxWebBrowser右键菜单

热门文章

  1. CAD中如何将图形对象快速转换成三维曲面?
  2. CentOS7安装GLPI资产管理系统
  3. apt-get update 报错 Repository ' InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
  4. HiveServer2启动报TezConfiguration类NoClassDefFoundError错误
  5. Cloud9 3.0 SDK安装
  6. Twitter Bootstrap Grid System
  7. pytorch循环神经网络实现回归预测 代码
  8. 小程序toast组件中事件触发条件
  9. [jQuery]z-index属性大于0的元素使用fadeIn无法正常过渡的问题
  10. unity Dotween Path 设置路径平滑加旋转平滑