第七节课·均值哈希&色彩聚类

本文介绍了如何在网页中应用均值哈希算法和色彩聚类技术。首先,详细阐述了如何将均值哈希算法的代码集成到main.py中,并用于比较图片的相似度。接着,讲解了色彩聚类的实现过程,包括使用scipy库进行聚类,以及在小尺寸图片上进行操作。最后,展示了如何在html中整合色彩聚类的结果,包括修改main.py和html文件以显示色彩聚类的效果。
摘要由CSDN通过智能技术生成

目录

7.1 网页中加入均值哈希算法

7.2色彩聚类

7.3 将色彩聚类添加在html中


7.1 网页中加入均值哈希算法

1.将定义均值哈希算法的代码加入main.py中

代码如下:


def genFrame():#写一个函数,放之前的片段。函数如果放在下面可能找不到,那就往上挪一挪
    v_path='static/ghz.mp4'
    image_save='static/pic'

    if not(os.path.exists(image_save)):#如果没有这个文件
        os.mkdir(image_save)#就新建一个文件

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

    for i in range(int(fc)):#帧数变为整数
        _,img=cap.read()
        cv2.imwrite('static/pic/image{}.jpg'.format(i),img)


# 均值哈希算法
def aHash(img):
    # 缩放为8*8
    img = cv2.resize(img, (8, 8))
    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    s = 0
    hash_str = ''  # s为像素和初值为0,hash_str为hash值初值为''
    # 遍历累加求像素和
    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

2.定义哈希算法比较图片相似度

先通过代码,创建文件夹;

存储第一张图片(image0);

注意:img1和img2需要读取之前pic(视频全部分镜)文件里的图片,否则找不到而报错

代码如下:

def shot():#哈希算法
    v_path = 'static/ghz.mp4'
    image_save = 'static/hash'
    if not (os.path.exists(image_save)):
        os.mkdir(image_save)

    filelist = os.listdir('static\pic')

    img1 = cv2.imread('static\pic\im
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值