import cv2
import numpy as np
img = cv2.imread('./img/img1.jpg', 1)
cv2.imshow('img1', img)
cv2.waitKey(0)
height, width = img.shap[:2]
print(height, width)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图像转换为灰度图像
dst = np.zeros((height, width, 3), np.uint8) # 创建一个和原图大小相等的全零矩阵
for i in range(2, height - 2):
for j in range(2, width - 2):
# 方框为4*4 对方框内像素点进行量化并记录不同等级像素点的个数
array = np.zeros(8, np.uint8) # 将像素点的值量化为8份,定义数组记录不同等级像素点的个数
for m in range(-2, 2): # -2 -1 0 1
for n in range(-2, 2):
p1 = int(gray[i + m, j + n] / 32) # 量化操作
array[p1] = array[p1] + 1 # 该数组用来记录不同量化级别下的像素点
# 比如array1[0]代表等级1下的像素点个数,即像素值为(0~64)的像素点个数
# 在上面的数组中寻找最大值,即寻找数目最多的像素等级
currentMax = array[0]
l = 0 # 用来封装最大值在数组中的未知
for k in range(0, 8):
if currentMax < array[k]:
currentMax = array[k]
l = k
# 求数目最多的像素等级平均
for m in range(-2, 2):
for n in range(-2, 2):
if gray[i + m, j + n] >= (l * 32) and gray[i + m, j + n] <= ((l + 1) * 32):
(b, g, r) = img[i + m, j + n]
dst[i, j] = (b, g, r)
cv2.imshow('youhua', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码用控件提交,你这个提交都是乱的,看不了