一、用哈希算法将图片筛选后显示在网页上

Hash.py

from flask import Flask,render_template
import cv2
import osapp=Flask(__name__)def aHash(img):# 缩放为8*8img = cv2.resize(img, (8, 8))# 转化为灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# s为像素和初值为0,hash_str为hash值初值为''s = 0hash_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 = 0print(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 + 1sim=1-n/64return simdef genFrame():v_path='static/video.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)_,img1=cap.read()cv2.imwrite('static/Hash2021/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<0.6:cv2.imwrite('static/Hash2021/image{}.jpg'.format(i),img2)img1=img2genFrame()

hash.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
均值哈希帧数:{{framecount}}<br>
{% for i in range(framecount) %}
<img height="40" src="static/Hash2021/{{filename[i]}}" />
{{filename[i]}}
{% endfor %}
</body>
</html>

在main.py加上

@app.route('/shot')
def shot():path='static/Hash2021'filename=os.listdir(path)framecount=len(filename)print(filename)print(type(filename))print(filename)return render_template('hash.html',filename=filename,framecount=framecount)

二、scipy色彩聚类

1.用图片的缩略图进行聚类

import os
import numpy as np
from PIL import Image
import matplotlib.pyplot as pltim=np.array(Image.open('hk7.jpg'))#用缩略图聚类
def colorz(filename,n=3):img=Image.open(filename)img=img.rotate(-90)img.thumbnail((200,200))w,h=img.sizeprint(w,h)print('w*h=',w*h)plt.axis('off')plt.imshow(img)plt.show()points=[]for count,color in img.getcolors(w*h):points.append(color)return pointscolorz('hk7.jpg',3)

2.对色彩进行聚类

#对色彩聚类
from scipy.cluster.vq import vq, kmeans, whiten
import matplotlib.pyplot as plt
import numpy as nppoints=colorz('hk7.jpg',3)
print(points[0:10]) fe=np.array(points,dtype=float)  #聚类需要是float或者double
print(fe[0:10])
book=np.array((fe[100],fe[1],fe[8],fe[8]))
print(type(book))
print('book: \n',book)codebook, distortion=kmeans(fe,7)print('codebook:', codebook)
centers=np.array(codebook,dtype=int)
print(centers)
print('distortion:',distortion)fe=np.array(points)
plt.scatter(fe[:,0],fe[:,2],c='b')
plt.scatter(codebook[:,0],codebook[:,2],c='r')
plt.show()

Class6——筛选后显示+scipy色彩聚类相关推荐

  1. excel 如何 筛选,以及筛选后,在复制时 显示 不可对多重选定区域使用此命令的解决办法...

    excel 如何 筛选,以及筛选后,在复制时 显示 不可对多重选定区域使用此命令的解决办法 选中 第一行, 开始 筛选 选择 某一列 右下角的小三角 ,进行内容筛选 即可. excel 筛选后,在复制 ...

  2. Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示

    Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示 1. 效果图 2. 源码 写这篇博客源于博友的提问,期望把下图中的多个茄子种子按从左到右的顺序提取出来: 1. 效果图 ...

  3. 筛选后系列填充_案例分享10——如何在筛选后的表格中粘贴数据(二)

    首先要诚挚感谢一路关注和支持我的你们~ 今天凌晨,公众号关注量突破500,成功开通了流量主功能啦!相信细心的你们也注意到了文章底部的不同了~ 感谢大家的支持与肯定,我会从易到难,坚持分享Excel的操 ...

  4. php利用表格敬将所选择的数据显示出来,单元格下拉筛选设置/Excel对筛选后的单元格进行下拉填充...

    EXCEL里怎样让一个单元格能有下拉菜单? 要设置下拉菜单的单元格(或格区)----数据---有效---"允许"中选择"序"---"来源"中 ...

  5. 筛选后系列填充_不会用Excel做数据筛选,老板叼的你没话说!

    很多人会做漂亮的表格,自信满满地给老板汇报,老板突然冒出一句话:你给我看下公司员工的学历分布情况. 这个问题能瞬间让很多人傻眼,自然少不了老板的一顿叼.其实数据筛选并不难,只要认真学,10分钟轻松搞定 ...

  6. excel自动筛选后分别复制粘贴到新文件的解决办法

    面对着一张包含全省数据的Excel表格,我们常常需要按其中某一列的数据通过自动筛选归类,然后以归类的名字新建Excel并将筛选的结果粘贴到新表中. 自动筛选后直接复制粘贴是会把数据全部粘到新表中的的, ...

  7. Excel筛选后数据行数

    数据筛选是常用的功能,简单高效.原始数据如下. 筛选一下Garde=2的数据,Excel的状态条上就显示"在7条记录中找到3个",可见数据是3行. 但是VBA中没有提供直接访问这个 ...

  8. Excel2021 无法复制筛选后的合并单元格数据提示无法操

    环境: Win10 专业版 Excel 2021 问题描述: Excel2021 无法复制筛选后的合并单元格数据,提示无法操作,怎么才能复制这些数据 解决方案: 1.之前筛选出重复值用红色显示(是我想 ...

  9. 计算机公式筛选,Excel数据汇总计算的套路:5种筛选后的数据处理技巧

    1.筛选后填充序号 表格中的序号我们一般利用拖动或双击鼠标来填充,但在使用筛选功能后,筛选出的部分数据,序号是不连续的,如何让序号在筛选后也是从1开始递增显示呢? 在A2单元格输入公式:=SUBTOT ...

  10. Excel表格自动筛选时显示合并单元格中全部记录的方法

    今天给单位一个分公司导数据,因为报表是全司的,如何导成某一个分公司的呢? 1.复制合并单元格所在的A列到其他空白列,如本例中的列的E2:E18,这样做的目的是保留合并单元格的大小和样式. 2.选择A2 ...

最新文章

  1. 背包模型dp1:01背包,完全背包,多重背包的两大优化的详解
  2. 0421实验二 作业调度模拟程序
  3. 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
  4. 帮助理解GAN的一些补充内容
  5. C++如何调用父类的方法?
  6. 电脑键盘下划线怎么打_图文详解笔记本电脑键盘失灵怎么办
  7. 【AI视野·今日Robot 机器人论文速览 第四期】Wed, 9 Jun 2021
  8. [Ajax] jQuery中的Ajax -- 04-异步提交表单
  9. 对于PHP大型开发框架的看法
  10. centos6使用docker部署zookeeper
  11. 安卓beforetextchanged_【已解决】Android中给EditText添加的TextWatcher中的onTextChanged始终被调用(被执行多次)...
  12. 不学无数——JAVA中NIO再深入
  13. php包含大马执行,对于某个PHP大马的分析
  14. unc0ver 越狱工具来袭,支持iOS11.0~iOS14.8稳定越狱 更新至V8.0.2 支持 A7-A14
  15. 黑客泄露澳大利亚大量求职者信息,其中包含11家重要公司名单
  16. QT实现打地鼠小游戏
  17. 手把手教你如何连接到宝塔面板创建的FTP空间
  18. 信用贷款违约预测项目
  19. Vue动态组件、组件缓存、组件激活和非激活、组件插槽、组件name
  20. 前端实现给文字添加动态背景

热门文章

  1. PG数据库按照30分钟时间片统计数据
  2. matlab gui 作者,MATLAB GUI设计学习手记(第4版)
  3. 数字图像处理大作业GUI设计
  4. 1753: [Usaco2005 qua]Who's in the Middle (快速排序)
  5. 信息安全实验:实现一个fake-wifi
  6. 如何为您的应用选择合适的微控制器?
  7. 以管理员身份运行闪退怎么解决_win7右击获得管理员权限时窗口闪退
  8. 计算机如何将两个磁盘合在一起,如何把两个磁盘合并在一起?
  9. 中译英提升:准译员如何“假装”自己很地道?丨打死个翻译官2.4
  10. 快速实现微信公众号支付功能