一、安装openCV
(就踩到了很多坑= =)
从以下博客中获得了很多帮助:
https://blog.csdn.net/u010105243/article/details/72026772
https://blog.csdn.net/u010128736/article/details/52713204
安就安了一晚上。。两个小时还没装好。。壮士
第二天关机再开发现就可以了 可能配置环境需要重启电脑
二、需求分析
帮同学写作业系列- -他的老师丢给他一个 识别视频中移动物体并把背景变成黑色 的作业。。
然后就来找我 感觉挺有意思的 以前也听说过opencv 没用过 遂接受 0.0反正写出来了他也不会发现我是一个弱鸡hhh
一开始想到pillow库,搜索了一下发现了moviepy库,可以编辑视频,但不能动态追踪
最后发现了完美契合需求的OpenCV库~
三、一些真正有用的学习博客:
https://blog.csdn.net/jqw11/article/details/73826014
https://blog.csdn.net/huanglu_thu13/article/details/52346578
https://blog.csdn.net/dcrmg/article/details/78817660
http://blog.topspeedsnail.com/archives/2112
http://python.jobbole.com/81593/
学了一下OpenCV的基本操作就开始上手了,不过也不是很容易,用到的函数比较多,还有HSV幺蛾子
遇到了一个bug:python opencv error:scn ==3||scn ==4 in function cv::cvtColor
试了很多次也没有解决了。。好在不影响视频播放
贴一下完整代码:
import cv2
import numpy as np
#读取视频
cap = cv2.VideoCapture("C:\\Users\hp\Desktop\python\IMG_4232.qt")
#设置颜色区间
#白色:0 0 221,180 30 255
#蓝色:100 43 46,124 255 255
lower_white = np.array([78,25,221])
upper_white = np.array([125,99,255])
while(cap!=0):
#读取视频到frame中,颜色识别方式转换成HSV
ret, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
#显示原来的视频
cv2.namedWindow('frame', cv2.WINDOW_FULLSCREEN)
cv2.imshow('frame', frame)
#提取视频中白色的部分
mask = cv2.inRange(hsv, lower_white, upper_white)
cv2.namedWindow('mask', cv2.WINDOW_FULLSCREEN)
cv2.imshow('Mask', mask)
#原视频和提取后的视频做与操作
res = cv2.bitwise_and(frame, frame, mask=mask)
cv2.namedWindow('res', cv2.WINDOW_FULLSCREEN)
cv2.imshow('res', res)
#q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()