近期项目要求,要做一个基于python+yolov3+opencv的目标检测,实际上是针对工业上的工业齿轮的检测。
那在这里我对我整个项目的介绍就不多了,主要是分享一波在写项目的过程中,利用opencv3.4针对视频流按帧截取并对图像进行识别的处理。贴个代码,大家了解一下~~~
@app.route(’/detection’, methods=[‘POST’])
def detection():
#结果集合
resultDatas = []
start_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(start_time) #设置一个开始时间,便于记录
rtmpAddr = request.json["rtmpAddr"] #这一步是获取视频流地址
rtmpAddr = cv2.VideoCapture(rtmpAddr) #cv2的 VideoCapture() 方法
shottime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #设置一个截取时间
flag = 0
if rtmpAddr.isOpened():
flag = 1
open_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(open_time)
else:
flag = 0
i = 0
if flag == 1:
while True:
ret, frame = rtmpAddr.read() # 读取视频帧
read_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(read_time)
if ret == True: # 判断是否读取成功
if i > 0:
break
i += 1
# 截图时间
end_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
origin_img = "/usr/local/darknet/saveImage/"+shottime+".jpg" # 存储图片的路径
cv2.imwrite(origin_img, frame) # 将提取的视频帧存储进imgPath
在这个过程中,我认为对cv2的认识一定要深刻,要对它的方法有很深的了解,因为他确实能在学习python的机器学习中,提供很好、很便利的的途径。cv2很强大,python很强大!!!
那么以上这些就是我个人的一些方法和技巧,欢迎大家交流,批评指正!