前言
仅记录学习过程,有问题欢迎讨论
正好这段时间有空学习一下CV。
可能使用到的包
可以通过Anaconda直接install,不行就PIP install xxx
- Python 3.6
- scikit-image
- numpy
- matplotlib
- pillow
- opencv-python
我安装opencv遇到了一点麻烦,可以参考这个博客:
https://blog.csdn.net/2401_84972776/article/details/138936195
数字图像
像素:
像素是分辨率的单位。
像素是构成位图图像最基本的单元,每个像素都有自己的颜色!
分辨率:
单位英寸内的像素点个数越多,分辨率越大,越高清分辨率是衡量图像质量的重要指标,通常以像素为单位,如1024x768、1920x1080等。分辨率越高,图像越清晰,细节越丰富。
RGB模型:三原色通道:
- 单通道:每个像素只有一个通道,即灰度值,灰度值范围通常为0-255,0表示黑,255表示白,中间值表示不同深度的灰色。
- 三通道(三张图片叠在一起):RGB模型,可以表示彩色,0表示黑色(计算量也是单通道的3倍,边缘可以转为单通道减少极计算量)
- 四通道:在RGB的基础上增加了一个透明度通道,即RGBA模型,可以表示透明度。
对比度:
不同颜色的差别,最大灰度/最小灰度
通道转化代码
"""
手动实现RGB 2 Gray 实现二值化
"""
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('test.png')
# 转为灰度图【cv接口】
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(gray, cmap='gray')
print("---image gray----")
print(gray)
plt.show()
# 手动实现RGB 2 Gray === B R G
gray2 = img[:, :, 0] * 0.114 + img[:, :, 1] * 0.587 + img[:, :, 2] * 0.299
#展示
plt.imshow(gray2, cmap='gray')
plt.show()
# 手动实现二值化(需要先转化为灰度 单通道 再转化为黑白的)
img1 = gray2
img1[img1 > 127] = 255
img1[img1 <= 127] = 0
plt.imshow(img1, cmap='gray')
plt.show()