头歌 彩色直方图计算
头歌 彩色直方图计算
·
本实验因为本人做了很久也没有做出来,最后看到源代码恍然大悟,分享给大家!希望可以帮助到大家~
编程要求:
按照给定图片路径,写出彩色图像直方图的计算,并且输出其峰值和最小值。 彩色图像是RGB格式,因此,会有三个通道,每个通道都有其频率最大值和最小值。 应用matplotlib.pyplot()函数可能不能进行图片展示(可以应用imsaveifg(filename)函数进行临时保存到编译环境),但是也可以在本地环境中运行输出图片,但是一定要有matplotlib库,如果没有该库函数,图片不能进行展示,可以在本地python环境中安装,应用 pip install matplotlib指令进行安装和配置。
测试说明:
平台会对你编写的代码进行测试: 彩色图像是具有三通道(RGB模式)的,因此对每个通道都会进行统计和计算,会有三组数值,6行输出值。
预期输出:
格式:(记得要有换行操作)
max: xxx
min: xxx
max: xxx
min: xxx
max: xxx
min: xxx
"""
本次实训任务为对彩色图像进行直方图的计算,以卡通图片为例,你需要对RGB每个通道都进行计算和绘制直方图,
在这里考核的重点是对直方图的峰值(最大值)和最小值的输出,因为一副图像可以唯一确定一副直方图,该直方图的峰值(最大值)和最小值
也是唯一被确定的。所以根据提示,完善相应代码,相信你一定可以的。
"""
import sys
import cv2
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
#计算直方图函数,img参数为输入图像,img_plt为生成图像灰度直方图
def histCover(img, fileName):
color = ["r", "g", "b"]
# 展示原始图像
########## Begin ##########
"""
任务1.展示原始图像,因为用到cv2函数读取,要用matplotlib库函数,所以应该转BGR格式为RGB格式
"""
img = img[:,:, [2, 1, 0]]
########## End ##########
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
# 绘制彩色直方图,需要对每个通道进行遍历,并且找到最大值和最小值
for index, c in enumerate(color):
########## Begin ##########
"""
任务2.对每个通道进行直方图的计算和绘制,需要调用cv2的计算直方图函数,返回值为hist
"""
hist = cv2.calcHist([img], [index], None, [256], [0, 255])
########## End ##########
print('max:', max(hist))
print('min:', min(hist))
plt.plot(hist, color=c)
plt.xlim([0, 255])
plt.savefig(fileName)
plt.show()
#主函数的定义,定义图片路径
def main_func(argv):
img_path = 'histogram/step4/img_data/ex_1.jpg'
img_plt='histogram/step4/stu_img/step4_plt.jpg'
########## Begin ##########
"""
任务3.根据给出的图像路径,加载图像,图像数据路径为img_path,返回值为imgOri1
"""
imgOri1 = cv2.imread(img_path)
########## End ##########
histCover(imgOri1,img_plt)
if __name__ == '__main__':
main_func(sys.argv)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)