
图像基础知识
发布日期: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)
。
- HSV:
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秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vector 实现类
2019-03-11
HashMap类、HashSet
2019-03-11
HashTable类
2019-03-11
TreeSet、TreeMap
2019-03-11
ObjectInputStream、ObjectOutputStream
2019-03-11
JVM内存模型
2019-03-11
反射机制
2019-03-11
反射Field、Method、Constructor
2019-03-11
可变长度参数
2019-03-11
堆空间常用参数总结
2019-03-11
逃逸分析-堆分配对象
2019-03-11
常量池、运行时常量池
2019-03-11
3、条件查询
2019-03-11
5、分组函数 / 聚合函数
2019-03-11
8、子查询
2019-03-11
cordova打包apk更改图标
2019-03-11
开启与配置SMTP服务器
2019-03-11
域名解析步骤
2019-03-11
APP卡片式设计
2019-03-11
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2019-03-11