一行代码快速图像识别~一排代码搞定视频识别

2020-09-15 16:31:32 浏览数 (1)

一个有趣的灵魂W

一行代码能干嘛?这种噱头式的开头现在估计已经不香了。。。我只能在别人挖好的土堆上再刨一铲子。

没错,咱们用的是Python,一行代码它就是能干很多事。用别人封装好的第三方库,我们可以用一行代码傻瓜式调用,干许多大事。

今天我们将使用一行代码实现深度学习里的图像识别,再将图像识别拓展到视频~进行视频流的物体识别。

我们将用到pixellib库和mask_rcnn_coco.h5这个训练好的模型。其中pixellib这个库可以非常简单的实现图像分割。我们可以利用pip install进行安装。github的开源地址为:

代码语言:javascript复制
https://github.com/ayoolaolafenwa/PixelLib

然后你还需要下载mask_rcnn_coco.h5这个训练好的模型~

下载地址在文末~

关于模型,我就不做过多介绍啦,有兴趣可以自行搜索。

好了,当你跟我一样把所有准备工作都完善了之后,我们就开始后续的步骤吧。。。

哦对了,请自行准备一个小视频。

啊----不,是小小的视频

让我们开始吧:

代码语言:javascript复制
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() #释放

哦霍霍~下面是结果的视频。。。http://mpvideo.qpic.cn/0bf2taaacaaa7qaht6gucrpfbggdagmaaaia.f10004.mp4?dis_k=9677c98b10a9491f840d21bb18772cb5&dis_t=1600158599

关注公众号,回复关键词 rcnn

就可以下载模型了。

另外,模型下载如果速度较慢~可以参考这个工具:

用这个工具下百度网盘文件,简直飞起 F君的小尾巴,公众号:一个有趣的灵魂W百度网盘下载很慢吧,Pandownload之后的新工具-亿寻

打完收工!往期

最新版中国范围路网数据来啦(OpenStreet Map,OSM)

python调用cmd运行GDAL报错解决:ERROR 1: PROJ

利用python把shp文件写入PostgresSQL数据库

ArcGIS入门之-建模工具-迭代掩膜提取

Python-gdal离线文档下载

微信号:一个有趣的灵魂W

关注我们,了解更多

0 人点赞