如何更改Django默认主页为自定义主页,更改Djago默认主页为自定义主页,这是开始网页的第一步。......
使用python判断图片模糊程度
在图像处理中有时需要界定图片和原图相比的模糊程度,通过计算方差是一种比较简单的判断方法。
工具/原料
- pycharm windows7
- opencv3 python3
方法/步骤
1)我们知道通过各种滤波可以使图片变得平滑,从数学上看其实是让像素和周边像素之间的梯度降低,或者说斜率变小。直观上看就是使得图片变得更加平滑。
2)基本方法:
基于上述判断,可以用的方法就比较多了,这里采用比较简单的方差判断法。
方差:表达元素之间差异大小,方差越大表示图像模糊程度越小。方差越小表示越模糊。
缺点:在背景比较模糊前景清晰图片判断可能会有误差,需要其他方法校正。
import numpy as np
import cv2 as cv
import math
from matplotlib import pyplot as plt
采用时下流行的黑洞图
image = cv.imread("c:heidong.jpg")
cv.imshow("image", image)
转灰度,并计算拉普拉斯方差
cv.imshow("gray", gray)
grayVar = cv.Laplacian(gray, cv.CV_64F).var()
print(grayVar)
# 均值滤波img_Blur = cv.blur(gray, (5, 5))grayVar = cv.Laplacian(img_Blur, cv.CV_64F).var()cv.imshow("img_Blur", img_Blur)print("grayVar: ", grayVar)
# 高斯滤波gray_GaussianBlur = cv.GaussianBlur(gray, (7, 7), 0)gray_GaussianBlurVar = cv.Laplacian(gray_GaussianBlur, cv.CV_64F).var()cv.imshow("gray_GaussianBlur", gray_GaussianBlur)print("gray_GaussianBlurVar: ", gray_GaussianBlurVar)
# 高斯双边滤波gray_bilateralFilter = cv.bilateralFilter(gray, 10, 35, 35)gray_bilateralFilterVar = cv.Laplacian(gray_bilateralFilter, cv.CV_64F).var()cv.imshow("gray_bilateralFilter", gray_bilateralFilter)print("gray_bilateralFilterVar: ", gray_bilateralFilterVar)
cv.waitKey(0)cv.destroyAllWindows()
结果判断:
原图灰度方差:1.409008475372512
中值灰度方差:grayVar: 0.5668145081805638
高斯灰度方差:gray_GaussianBlurVar: 0.5615168533254424
双边灰度方差:gray_bilateralFilterVar: 0.5145180366646954
经过滤波平滑后,方差变低,图片模糊了。
符合预期效果
注意事项
- cv.Laplacian(gray, cv.CV_64F).var() 公式直接计算简单方便
- 要和原图比较,单纯数值意义不大
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: python
相关文章
- 详细阅读
-
python中关于单/双引号和转义引号的区别详细阅读
python中关于单/双引号和转义引号的区别,ytho中单/双引号的作用是将引号中间的符号以字符串的形式传递,而在ytho中它们两个的功能是一样的,只不过在遇到转义引号的时候,两者的使用才有所区别,现......
2023-03-16 349 python
- 详细阅读