淘宝看到一款很便宜的双目,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() #释放摄像头

运行效果如下:

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

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

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

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

  

jetson TX2 + opencv3.4 + python3 + 双目 +人脸检测的更多相关文章

  1. python3 opencv3 实现基本的人脸检测、识别功能

    一言不和,先上码子(纯新手,莫嘲笑) # encoding: utf-8 #老杨的猫,环境:PYCHARM,python3.6,opencv3 import cv2,os import cv2.fac ...

  2. 在opencv3中进行图片人脸检测

    在opencv中,人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法.这种算法需要提前训练大量的图片,非常耗时,因此opencv已经训练好了,把训练结果存放在一些xml文件里面.在 ...

  3. 基于opencv3.0下的人脸检测和检测部分的高斯模糊处理

    如题 这里将任务分解为三大部分: 1.录播放视频 2.人脸检测 3.部分高斯模糊 其中重点放在人脸检测和部分高斯模糊上 1.录播放视频(以opencv中的VideoCapture类进行实现) 首先罗列 ...

  4. python3 百度AI-v3之 人脸对比 & 人脸检测 & 在线活体检测 接口

    #!/usr/bin/python3 # 百度人脸对比 & 人脸检测api-v3 import sys, tkinter.messagebox, ast import ssl, json,re ...

  5. python opencv3 摄像头人脸检测

    git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 def detect(): # 创建人脸检测的对象 ...

  6. 人脸检测及识别python实现系列(1)——配置、获取实时视频流

    人脸检测及识别python实现系列(1)——配置.获取实时视频流 1. 前言 今天用多半天的时间把QQ空间里的几篇年前的旧文搬到了这里,算是完成了博客搬家.QQ空间里还剩下一些记录自己数学学习路线的学 ...

  7. 使用TensorRT对人脸检测网络MTCNN进行加速

    前言 最近在做人脸比对的工作,需要用到人脸关键点检测的算法,比较成熟和通用的一种算法是 MTCNN,可以同时进行人脸框选和关键点检测,对于每张脸输出 5 个关键点,可以用来进行人脸对齐. 问题 刚开始 ...

  8. NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令

    NVIDIA Jetson TX2 查看系统参数状态. 当前博主的TX2更新的版本为:Jetpack 3.3, cuda 9.0.252, cudnn7.0, opencv3.3.1, TensorR ...

  9. 在Jetson TX2上捕获、显示摄像头视频

    参考文章:How to Capture and Display Camera Video with Python on Jetson TX2 与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下 ...

  10. 在Jetson TX2上安装caffe和PyCaffe

    caffe是Nvidia TensorRT最支持的深度学习框架,因此在Jetson TX2上安装caffe很有必要.顺便说一句,下面的安装是支持python3的. 先决条件 在Jetson TX2上完 ...

随机推荐

  1. 下载base64图片

    下载 this.downloadFile('二维码',that.img64) downloadFile(fileName, content) { let aLink = document.create ...

  2. C与C++字符串比较

    #include<iostream> #include<string> using namespace std; int main() { char a[] = "a ...

  3. win10家庭版vmwarework启动蓝屏

    最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了

  4. 1.java 开始

    WelloWorld 随便新建一个文件夹,存放代码 新建一个java文件 编写代码 编译javac java文件,生成一个class文件 运行class文件,java class 可能遇到的情况 每个 ...

  5. SQL Server【提高】碎片

    碎片 当对索引所在的基础数据表进行增删改时,若存储的数据进行了不适当的跨页(SQL Server中存储的最小单位是页,页是不可再分的),就会导致索引碎片的产生. 外部碎片 插入的数据使页与页之间造成断 ...

  6. Visual Studio NuGet的地址(记录)

    NuGet源地址 : https://nuget.org/api/v2/ https://api.nuget.org/v3/index.json  (推荐)

  7. C语言 数据编码方式

    一.整形数据类型 1.无符号数的编码 无符号数指的是整个机器字长的全部位数均表示数值位. 我们用函数      来进行运算.(B2U是Binary to Unsigned的缩写,长度为w),x代表为0 ...

  8. hierarchical-clustering

    https://ww2.mathworks.cn/help/stats/hierarchical-clustering.html https://ww2.mathworks.cn/help/stats ...

  9. js中构造函数中this指向问题

    构造函数构造函数中的this指向new创建的新对象function FOO(name) {this.name = name;console.log(this) // Foo {name: " ...

  10. css初始化、background属性、jquery选择器模糊匹配、canvas

    1.css初始化 2.background 3.jquery选择器模糊匹配 4.canvas画多边形 5.通过css设置canvas背景图片 6.js动态生成变量名