- 输入图片预处理1
import cv2 import matplotlib.pyplot as plt import numpy as np def get_gray_pic(img_path): """ 获取灰度图片 :param img_path:原图片路径 :return: 灰度图片 """ img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) return img def amplify_tow_time(image): """ 将输入图片放大两倍,并返回 :param image: 输入图片 :return: 放大后的图片 """ shape = image.shape res = cv2.resize(image, (shape[0] * 2, shape[1] * 2), interpolation=cv2.INTER_CUBIC) return res def save_pic(save_path, img): """ 保存图片 :param save_path:保存路径 :param img: 图片 :return: None """ cv2.imwrite(save_path, img) def display_img(img): """ 显示图片,在输入 0 后 关闭图片 :param img: :return: """ cv2.imshow('img', img) cv2.waitKey(0) def statistics_img_color_gradation(img): """ 统计图片色阶,并返回统计信息 :param img: 图片 :return: 色阶信息 """ return_info = {} shape = img.shape for i in range(shape[0]): for j in range(shape[1]): tmp_grade = img[i][j] times = return_info.get(tmp_grade) if times is None: return_info.setdefault(tmp_grade, 0) else: times = times + 1 return_info[tmp_grade] = times pass pass pass return return_info def display_color_grade(colo_info): """ 显示图片信息 :param colo_info: :return: None """ index = np.arange(0, 256, 1) y = [] for i in index: tmp_value = colo_info.get(i) if tmp_value is None: y.append(0) else: y.append(tmp_value) pass plt.bar(left=index, height=y, color='green', width=0.5) plt.show() def get_kernel_density(img_color_grade_info): """ 通过色阶数据获取核密度函数信息 :param img_color_grade_info:色阶 :return:核密度信息 """ kernel_function = np.divide(1, np.square(2 * np.pi)) * k = 0.1 y = (1 / 256) * 0.1 * pass if __name__ == '__main__': img_path = '1.png' # 获得灰度图片 gray_img = get_gray_pic(img_path) # 放大两倍 twice_img = amplify_tow_time(gray_img) img_color_grade_info = statistics_img_color_gradation(twice_img) kernel_density = get_kernel_density(img_color_grade_info) # display_color_grade(img_color_grade_info)