2021-11-12

2021-11-12,第1张

2021-11-12

html部分




    
    Title


视频分镜


{{framecount}}
{{pic1}} {% for f in filelist %} {piclist}}{{f}}"/> {% endfor %}

hash.pybufen

from flask import Flask, render_template
import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
print(os.getcwd())

app = Flask(__name__)
# 均值哈希算法
def aHash(img):
    # 缩放为8*8
#     plt.imshow(img)
#     plt.axis('off')  #去掉坐标轴
#     plt.show()
    img = cv2.resize(img, (8, 8))
#     plt.imshow(img)
#     plt.axis('off')  #去掉坐标轴
#     plt.show()

    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # s为像素和初值为0,hash_str为hash值初值为''
    s = 0
    hash_str = ''
    # 遍历累加求像素和
    for i in range(8):
        for j in range(8):
            s = s + gray[i, j]
    # 求平均灰度
    avg = s / 64
    # 灰度大于平均值为1相反为0生成图片的hash值
    for i in range(8):
        for j in range(8):
            if gray[i, j] > avg:
                hash_str = hash_str + '1'
            else:
                hash_str = hash_str + '0'
    return hash_str

# Hash值对比
def cmpHash(hash1, hash2):
    n = 0
    print(hash1)
    print(hash2)
    # hash长度不同则返回-1代表传参出错
    if len(hash1)!=len(hash2):
        return -1
    # 遍历判断
    for i in range(len(hash1)):
        # 不相等则n计数+1,n最终为相似度
        if hash1[i] != hash2[i]:
            n = n + 1
    return n


# img1 = cv2.imread('./pic/image58.jpg')  #  11--- 16 ----13 ---- 0.43
# img2 = cv2.imread('./pic/image59.jpg')
#
#
# hash1 = aHash(img1)
# hash2 = aHash(img2)
# n = cmpHash(hash1, hash2)
# print('均值哈希算法相似度:', n)

def genframe():
    v_path='/Users/arco/PycharmProjects/homework/static/vm1.mp4'
    image_save='/Users/arco/PycharmProjects/homework/static/hash'

    if not(os.path.exists(image_save)):
        print
        "当前工作目录 : %s" % os.getcwd()

    cap=cv2.VideoCapture(v_path)
    fc=cap.get(cv2.CAP_PROP_frame_COUNT)

    _, img1 = cap.read()
    cv2.imwrite('/Users/arco/PycharmProjects/homework/static/hash/image{}.jpg'.format(0), img1)
    for i in range(int(fc)-1):
        _,img2=cap.read()
        hash1 = aHash(img1)
        hash2 = aHash(img2)
        n = cmpHash(hash1, hash2)
        if n>35:
            cv2.imwrite('/Users/arco/PycharmProjects/homework/static/hash/image{}.jpg'.format(i),img2)
            img1=img2
@app.route('/')
def index():
    # return "Hi,Flask!"
    # genframe()
    pic='static/hash/image'
    framecount=14
    piclist='static/hash/'
    filePath = '/Users/arco/PycharmProjects/homework/static/hash/'
    filelist = os.listdir(filePath)
    print(filelist)
    return render_template('hash.html',pic1=pic,framecount=framecount,filelist=filelist,piclist=piclist)

if "__main__" == __name__:
    app.run(port="5007")

结果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490894.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存