选一幅自己的照片,编程实现显示照片(原图可显示彩色或者灰度均可)以及灰度直方图(灰度图像对应的灰度直方图) 代码部分可参考课件例题代码。最后需要提交代码截图以及运行结果截图
时间: 2024-09-23 09:14:00 浏览: 41
ENVI软件中图像灰度直方图观测方法详解
在Python中,我们可以使用PIL(Pillow库)来处理图片,OpenCV则可以用于灰度转换和直方图计算。以下是基本步骤和一个简单的示例代码:
首先,确保已安装Pillow和OpenCV库,如果没有,可以通过`pip install pillow opencv-python-headless`进行安装。
```python
from PIL import Image
import cv2
# 加载图片
def load_image_and_convert(image_path):
# 使用PIL打开图片
img_pil = Image.open(image_path)
# 将PIL图片转为灰度图像
img_gray_pil = img_pil.convert('L') # 'L'代表灰度模式
# 使用OpenCV加载并转换为灰度
img_cv = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # cv2.IMREAD_GRAYSCALE直接读取为灰度
return img_pil, img_gray_pil, img_cv
# 显示原图
def display_images(imgs):
for img in imgs:
img.show()
# 计算灰度直方图
def calculate_histogram(img_gray):
hist = cv2.calcHist([img_gray], [0], None, [256], [0, 256])
plt.plot(hist)
plt.xlim([0, 256])
plt.ylabel('Frequency')
plt.xlabel('Grayscale Value')
plt.title('Gray Scale Histogram')
# 主函数
def main():
image_path = 'your_image_path.jpg' # 替换为你要展示的图片路径
original_img, gray_pil_img, gray_cv_img = load_image_and_convert(image_path)
display_images([original_img, gray_pil_img]) # 显示原图和灰度图
calculate_histogram(gray_cv_img) # 计算灰度直方图并显示
if __name__ == "__main__":
main()
```
阅读全文