一个有趣的灵魂W
一行代码能干嘛?这种噱头式的开头现在估计已经不香了。。。我只能在别人挖好的土堆上再刨一铲子。
没错,咱们用的是Python,一行代码它就是能干很多事。用别人封装好的第三方库,我们可以用一行代码傻瓜式调用,干许多大事。
今天我们将使用一行代码实现深度学习里的图像识别,再将图像识别拓展到视频~进行视频流的物体识别。
我们将用到pixellib库和mask_rcnn_coco.h5这个训练好的模型。其中pixellib这个库可以非常简单的实现图像分割。我们可以利用pip install进行安装。github的开源地址为:
https://github.com/ayoolaolafenwa/PixelLib
然后你还需要下载mask_rcnn_coco.h5这个训练好的模型~
下载地址在文末~
关于模型,我就不做过多介绍啦,有兴趣可以自行搜索。
好了,当你跟我一样把所有准备工作都完善了之后,我们就开始后续的步骤吧。。。
哦对了,请自行准备一个小视频。
啊----不,是小小的视频
让我们开始吧:
import cv2
vc = cv2.VideoCapture("D:/b/2.mp4") # 设置视频位置
c = 1
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
timeF = 1 # 设置帧数
while rval:
rval, frame =vc.read()
if(c%timeF==0):
cv2.imwrite('D:/b/mp4/'+ str(c)+'.jpg',frame) # 设置图片存储的位置
c=c+1
cv2.waitKey(1)
vc.release()
import pixellib
import os
from pixellib.instance import instance_segmentation
segment_image = instance_segmentation()
segment_image.load_model('D:/b/mask_rcnn_coco.h5')###运行过才知道h5是训练好的模型,需要单独下载
path='D:/b/mp4'
inf=os.listdir('D:/b/mp4')
inf.sort(key=lambda x:int(x[:-4]))
for i in range(len(inf)):
segment_image.segmentImage('D:/b/mp4/'+inf[i], output_image_name = 'D:/b/newmp4/'+inf[i], show_bboxes = True)
#原视频图片和新视频图片合并
path='D:/b/mp4'
path2='D:/b/newmp4'
inf=os.listdir(path)
inf2=os.listdir(path2)
inf.sort(key=lambda x:int(x[:-4]))
inf2.sort(key=lambda x:int(x[:-4]))
for i in range(len(inf)):
a=cv2.imread(path+'/'+inf[i])
b=cv2.imread(path2+'/'+inf2[i])
c=np.column_stack((a,b))
cv2.imwrite('D:/b/new2/'+inf[i],c)
# 图片合成视频
filelist = os.listdir('D:/b/new2') #获取该目录下的所有文件名
filelist.sort(key=lambda x:int(x[:-4]))
fps = 24
size=(640,240)
file_path ='D:/b/5.mp4'#导出路径
fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')#不同视频编码对应不同视频格式(例:'I','4','2','0' 对应avi格式)
video = cv2.VideoWriter( file_path, fourcc, fps, size )
for item in filelist:
item = 'D:/b/new2/' + item
img = cv2.imread(item) #使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
video.write(img) #把图片写进视频
video.release() #释放
哦霍霍~下面是结果的视频。。。
另外,模型下载如果速度较慢~可以参考这个工具:
用这个工具下百度网盘文件,简直飞起
F君的小尾巴,公众号:一个有趣的灵魂W百度网盘下载很慢吧,Pandownload之后的新工具-亿寻
打完收工!往期最新版中国范围路网数据来啦(OpenStreet Map,OSM)python调用cmd运行GDAL报错解决:ERROR 1: PROJ利用python把shp文件写入PostgresSQL数据库ArcGIS入门之-建模工具-迭代掩膜提取Python-gdal离线文档下载