python识别视频黑屏或者低清晰度
时间:2022-07-28
本文章向大家介绍python识别视频黑屏或者低清晰度,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一步:获取视频第一帧图片
https://www.cnblogs.com/pythonywy/p/13749735.html
第二步:进行识别
import os
import numpy as np
import cv2 as cv
from skimage import filters, io
class DetectException(Exception):
pass
class DetectionUtil:
DARK_THRES_PIXEL = 20
DARK_THRES_PERCENT = 0.90
QUALITY_THRES = 30
def unqualified_detection(self, image_path):
"""black screen or low quality."""
# image = cv.imread(image_path)
try:
image = io.imread(image_path)
except Exception as e:
raise DetectException(e)
image = image[:, :, ::-1]
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
row, col = gray_image.shape[:2]
pixel_count = row*col
dark_condition = (gray_image <self.DARK_THRES_PIXEL)
dark_array = gray_image[dark_condition]
if dark_array.size / pixel_count >= self.DARK_THRES_PERCENT:
return True
quality = self.genengrad_detection(image)
if quality < self.QUALITY_THRES:
return True
return False
def _preprocess_image(self, image):
re_img = cv.resize(image, (800, 900), interpolation=cv.INTER_CUBIC)
gray_image = cv.cvtColor(re_img, cv.COLOR_BGR2GRAY)
image_matrix = np.matrix(gray_image)
return image_matrix
def genengrad_detection(self, image):
matrix =self._preprocess_image(image)
return np.sqrt(np.sum(filters.sobel(matrix)**2))
if __name__ == "__main__":
print(DetectionUtil().unqualified_detection(r"视频封面地址"))
#true为黑屏或者低分辨率
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- js汇率计算器系统
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
- JS逐步教你做(自己版本)的视频播放器(我先声明,step我不懂是什么意思,所以没用)
- 【mysql系列】细谈“explain”之理论Part
- 如果用java swing编写一个五子棋(人人对战)
- 【mysql系列】细谈explain执行计划之“谜”
- 洛谷 P1352 没有上司的舞会(树形 DP)
- CF思维联系– CodeForces - 991C Candies(二分)
- 洛谷P1122 最大子树和 树形DP初步
- JAVA_WEB--jsp语法
- 图论--树的直径--DFS+树形DP模板
- js逐步教你实现原生电影院系统
- JAVA_WEB--jsp概述
- js逐步教你实现原生古诗匹配系统
- c++从入门到进阶--引用与常量