Python3使用OpenCV和hyperlpr实现视频帧截图并进行图像去重和车牌识别

     Python3使用OpenCV和hyperlpr实现视频帧截图并进行图像去重和车牌识别。

     (1)其中有获取每一帧视频并保存为图片的代码

     (2)可以去除重复相似的图片

     (3)通过hyperlpr实现车牌识别,全部代码如下:

import cv2
import os
from skimage.metrics import structural_similarity as compare_ssim
from hyperlpr import *

image_base_path = "G:\\videos\\";

def get_images(video_path):
    frame_times = -1;
    fileName = video_path.split("\\")[-1:][0].split('.')[0]
    image_out_path = image_base_path + fileName
    if not os.path.exists(image_out_path):
        os.makedirs(image_out_path) 

    cap = cv2.VideoCapture(video_path)
    while cap.isOpened():
        frame_times = frame_times + 1
        success, frame = cap.read()
        if not success:
            break;
        if(frame_times%45==0):
            cv2.imencode('.jpg', frame)[1].tofile(image_out_path + "\\" + str(frame_times) + ".jpg")


def delete(filename1):#删除不想要的图片
    os.remove(filename1)            

if __name__ == '__main__':
    get_images("G:\\videos\\wvax_2.mp4")   
    dir_path = "G:\\videos\\wvax_2\\"
    image_path=[]
    image_files=os.listdir(dir_path)
    #image_files.sort(key=lambda x:int(x.split('.')[1]))#用于进行文件排序,可以根据自己的文件命名来更改代码
    print(image_files)
    for image_file in image_files:
        image_path.append(os.path.join(dir_path,image_file))
    print(image_path)
    image_0 = cv2.imread(image_path[0])
    image_0_simp=image_0[:,:,0]
    print(image_0_simp.sum())
    for image in image_path[1:]:
        image_1=cv2.imread(image)
        image_1_simp=image_1[:,:,0]
        # cv2.imshow("111",image_1_simp)
        # cv2.waitKey(0)
        ssim = compare_ssim(image_0_simp, image_1_simp, multichannel=True)
        print(ssim)
        if ssim>0.45:
            delete(image)
        else:
            image_0 = cv2.imread(image)
            image_0_simp = image_0[:, :, 0]


    image_path=[]
    image_files=os.listdir(dir_path)
    #image_files.sort(key=lambda x:int(x.split('.')[1]))#用于进行文件排序,可以根据自己的文件命名来更改代码
    print(image_files)
    for image_file in image_files:
        image_path.append(os.path.join(dir_path,image_file))
    print(image_path)
    image_0 = cv2.imread(image_path[0])
    image_0_simp=image_0[:,:,0]
    print(image_0_simp.sum())
    for image in image_path[1:]:
        image_1=cv2.imread(image)
        print(HyperLPR_plate_recognition(image_1))   

视频文件:

 视频自动截图保存的图片文件:

 

最终效果(图片做了处理,不展示完整的车牌号码):

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值