栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2,一个人体姿态识别的项目实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2,一个人体姿态识别的项目实现

1 认识

简单地放几张图片感受一下 opencv识别的人体
本项目基于pycharm python3.6 和anaconda4.0做的 仅供参考

2 start 直接干货

先来看一下这三个函数

加载图片 显示图片 保存图片
OpenCV函数 
cv2.imread(参数1 参数2), 如img cv2.imread( IU.jpg ,0)
 加载成功显示图片 没有找到图片返回none 
 参数1 照片名字如 xx.jpg
 参数2 读入方式 省略即采用默认值
 cv2.IMREAD_COLOR 彩色图 默认值(1)
 cv2.IMREAD_GRAYSCALE 灰度图(0)
 cv2.IMREAD_UNCHANGED 包含透明通道的彩色图(-1)
cv2.imshow(参数1 参数2),如 cv2.imshow( IU ,img)
cv2.imwrite() 如cv2.imwrite( IU.jpg , img)
例子1

显示一个图片的灰度图 挑选一张图片保存到这个工程下面即可

# -*- coding: utf-8 -*-
import cv2
img cv2.imread( IU.jpg ,0)#加载成功显示图片 没有找到图片返回none 第二个参数0看最后几行介绍
cv2.namedWindow( IU , cv2.WINDOW_NORMAL)#建立一个IU的窗口 参数2默认是cv2.WINDOW_AUTOSIZE 表示窗口大小自适应图片 也可以设置为cv2.WINDOW_NORMAL 表示窗口大小可调整。图片比较大的时候 可以考虑用后者。
cv2.imshow( IU ,img)
cv2.waitKey(0) #让窗口显示停留 参数是等待时间 毫秒ms 。时间一到 会继续执行接下来的程序 传入0的话表示一直等待
例子2

学习打开摄像头捕获照片、播放本地视频、录制视频等

打开摄像头并捕获照片
播放本地视频 录制视频
OpenCV函数 cv2.VideoCapture(), cv2.VideoWriter()

打开摄像头 并灰度化显示 键盘上按q退出

# 打开摄像头并灰度化显示
import cv2
capture cv2.VideoCapture(0)
while(True):
 # 获取一帧
 ret, frame capture.read()
 # 将这帧转换为灰度图
 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 cv2.imshow( frame , gray)
 # 获取捕获的分辨率
 # propId可以直接写数字 也可以用OpenCV的符号表示
 width, height capture.get(3), capture.get(4)
 print(width, height)
 # 以原分辨率的一倍来捕获
 # capture.set(cv2.CAP_PROP_frame_WIDTH, width * 2)
 # capture.set(cv2.CAP_PROP_frame_HEIGHT, height * 2)
 if cv2.waitKey(1) ord( q ):
 break

灰度播放一段视频

# 播放本地视频
capture cv2.VideoCapture( demo_video.mp4 )
while(capture.isOpened()):
 ret, frame capture.read()
 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 cv2.imshow( frame , gray)
 if cv2.waitKey(30) ord( q ):
 break

录制视频

capture cv2.VideoCapture(0)
# 定义编码方式并创建VideoWriter对象
fourcc cv2.VideoWriter_fourcc(* MJPG )#FourCC是用来指定视频编码方式的四字节码。如MJPG编码可以这样写
outfile cv2.VideoWriter( output.avi , fourcc, 25., (640, 480))#输出的文件名 如 output.avi 
编码方式FourCC 帧率FP 要保存的分辨率大小
while(capture.isOpened()):
 ret, frame capture.read()
 if ret:
 outfile.write(frame) # 写入文件
 cv2.imshow( frame , frame)
 if cv2.waitKey(1) ord( q ):
 break
 else:
 break
例子3

ROI
ROI Region of Interest 感兴趣区域。什么意思呢 比如我们要检测眼睛 因为眼睛肯定在脸上 所以我们感兴趣的只有脸这部分 其他都不care 所以可以单独把脸截取出来 这样就可以大大节省计算量 提高运行速度。

获取图像的ROI区域 如获取下图图片左眼的区域

先找到眼睛区域的值 运行下面代码然后移动鼠标获取像素点的x,y的值并记录下来
我记录的x y的值为 53,122 ————106,169

import cv2
img cv2.imread( pic.jpg ,1)
cv2.imshow( face , img)
cv2.waitKey(0)

然后切记img【先是y 后是x】 行对应y 列对应x 所以其实是img[y, x] 需要注意噢(●ˇ∀ˇ●)。容易混淆的话 可以只记行和列 行在前 列在后。

import cv2
img cv2.imread( pic.jpg ,1)
p img[ 120:170, 50:100]
cv2.imshow( face , p)
cv2.waitKey(0)


下一个例子

import cv2
img cv2.imread( IU.jpg ,1)
p img[ 594:835, 270:595]
cv2.imshow( face , p)
# cv2.namedWindow( IU , cv2.WINDOW_NORMAL)
# cv2.imshow( IU ,img) #先运行注释掉的代码 用鼠标缺点脸部区域的坐标
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号