图像基础知识
发布日期:2021-05-14 15:07:22 浏览次数:18 分类:精选文章

本文共 2030 字,大约阅读时间需要 6 分钟。

图像基础知识

1. 读取图像

在 OpenCV 中使用 cv2.imread() 函数读取图像。

  • 参数 0 表示灰度图像,1 表示彩色图像。
  • 例如:img = cv2.imread('split.jpg', 1)
  • 查看图像尺寸和通道数:print(img.shape) 或直接查看图像内容 print(img)

2. 显示图像并保存

  • 读取图像:img = cv2.imread('split.jpg', 1)
  • 显示图像:cv2.imshow('photo', img)
  • 使用 cv2.waitKey(0) 等待键盘输入,按下 ESC 退出:if k == 27:
  • 按下 S 键保存图像并退出:elif k == ord('s'):
  • 保存图像:cv2.imwrite('split_.jpg', img)
  • 关闭所有窗口:cv2.destroyAllWindows()

3. 通道转换:三通道转为单通道灰度图

  • 使用 cv2.cvtColor() 函数:gray = cv2.cvtColor(img, code)
  • 常用代码:gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)cv2.COLOR_BGR2GRAY
  • 保存灰度图像:cv2.imwrite('gray.jpg', gray)

4. 通道转换:单通道转为三通道灰度图

  • 使用 cv2.cvtColor() 反转换回三通道图像:bgr = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
  • 保存彩色图像:cv2.imwrite('bgr.jpg', bgr)

5. 图像三通道分离

  • 分离红、绿、蓝通道:
    • red = img[..., 0]
    • green = img[..., 1]
    • blue = img[..., 2]
  • 显示各通道图像:cv2.imshow('red', red) 等。

6. 图像通道合并

  • 使用 cv2.cvtColor() 合并通道:result = cv2.cvtColor(blue, cv2.COLOR_GRAY2BGR)
  • 保存合并后的图像:cv2.imwrite('merged.jpg', result)

7. RGB 与 BGR 转换

  • OpenCV 图像默认使用 BGR 格式。
  • 转换为 RGB 格式:rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  • 保存 RGB 图像:cv2.imwrite('rgb.jpg', rgb)

8. RGB 与 HSV 转换

  • 使用 cv2.cvtColor() 转换:
    • HSV:hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    • 反转换为 RGB:rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)

9. 直方图绘制方法 1

  • 使用 Matplotlib:plt 和 OpenCV 的 cv2.calcHist() 函数。
  • 示例:
    plt.figure(figsize=(10, 6))  
    for i, channel in enumerate(['red', 'green', 'blue']):
    hist = cv2.calcHist([img], [i], None, [256], [0, 256])
    plt.plot(hist, label=f'Channel {channel}')
    plt.xlabel('Bins')
    plt.ylabel('Histogram')
    plt.title('Image Histogram')
    plt.legend()
    plt.show()

10. 三通道直方图绘制

  • 示例:
    from matplotlib import pyplot as plt  
    girl = cv2.imread('girl.jpg')
    plt.figure(figsize=(12, 8))
    for i, color in enumerate(['red', 'green', 'blue']):
    hist = cv2.calcHist([girl], [i], None, [256], [0, 256])
    plt.plot(hist, color=color, label=f'{color} Channel')
    plt.xlabel('Bins')
    plt.ylabel('Count')
    plt.title('Girl Image Histogram')
    plt.legend()
    plt.show()

通道分离与合并小结

  • 通道分离用于调整图像色彩和效果。
  • 通道合并用于恢复原始图像。
  • OpenCV 提供多种转换和操作工具,适用于不同需求。
上一篇:常识:
下一篇:图像基础

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年05月01日 09时16分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章