Python学习笔记(使用百度AI进行人体状态识别功能,并在图片中画出人体位置)
识别效果:代码如下:#!/usr/bin/python# -*- coding: UTF-8 -*-import cv2import jsonfrom aip import AipBodyAnalysisimport rospydef get_image():cap = cv2.VideoCapture(1) #打开摄像头while(1):...
·
识别效果:
代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cv2
import json
from aip import AipBodyAnalysis
import rospy
def get_image():
cap = cv2.VideoCapture(1) #打开摄像头
while(1):
ret, frame = cap.read() #获取图片
cv2.imshow('video',frame) #打开窗口显示图片
if cv2.waitKey(1) & 0xFF == ord('q'): # 当按下q时保存图片并退出显示窗口
cv2.imwrite("test.jpg",frame)
break
cap.release()
cv2.destroyAllWindows()
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 检测图片
def chack_image():
image = get_file_content('test.jpg')
#ID setup
APP_ID = '---------'
API_KEY = '------------'
SECRET_KEY = '--------------'
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
""" 调用人体关键点识别 """
keyword = client.bodyAnalysis(image)
""" 打印json格式 """
print json.dumps(keyword, sort_keys = True, indent = 2)
print("person_num:%d" %(keyword['person_num']))
draw_image = cv2.imread('test.jpg')
for i in range(0, keyword['person_num']):
#识别人体的位置(x,y)
x1 = keyword['person_info'][i]['location']['left']
y1 = keyword['person_info'][i]['location']['top']
x2 = keyword['person_info'][i]['location']['width'] + x1
y2 = keyword['person_info'][i]['location']['height'] + y1
#点位取整
round(x1)
round(x2)
round(y1)
round(y2)
#打开图片并绘画出来人体框图
print("draw_image")
print("( %d , %d )" %(x1,y1))
print("( %d , %d )" %(x2,y2))
#画出矩形
cv2.rectangle(draw_image, (int(x1),int(y1)), (int(x2),int(y2)), (0,255,0), 4)
person_name = 'person'+str(i)
#标注文本
cv2.putText(draw_image, person_name, (int(x1),int(y1)), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 3)
while(1):
cv2.imshow('porson_detect',draw_image) #打开窗口显示图片
if cv2.waitKey(1) & 0xFF == ord('w'): # 当按下w时保存图片并退出显示窗口
cv2.imwrite("test.jpg",draw_image)
break
cv2.destroyAllWindows()
if __name__ == '__main__':
get_image()
chack_image()
更多推荐
已为社区贡献7条内容
所有评论(0)