记录一下方便后面复习
(一)使用OpenCV进行RGB到HSV和YUV色彩空间转换,并显示保存
源代码:
import cv2
lena = cv2.imread('./rgb.bmp')
hsv = cv2.cvtColor(lena, cv2.COLOR_BGR2HSV)
yuv = cv2.cvtColor(lena, cv2.COLOR_BGR2YUV)
cv2.imshow('bgr', lena)
cv2.imshow('hsv', hsv)
cv2.imshow('yuv', yuv)
if cv2.imwrite('HSV.png', hsv) and cv2.imwrite('YUV.png', yuv):
print('图像保存成功')
else:
print('保存失败')
cv2.waitKey()
cv2.destroyAllWindows()
显示结果:
保存结果:
(二)使用OpenCV将彩色图片转成灰度图片,并得到图片的灰度直方图
源代码:
import cv2
import matplotlib.pyplot as plt
try:
lena = cv2.imread('rgb.bmp')
gray = cv2.cvtColor(lena, cv2.COLOR_BGR2GRAY)
cv2.imshow('bgr', lena)
cv2.imshow('gray', gray)
hist = cv2.calcHist([gray], [0], None, [256], [0,255])
print('hist=\r\n', hist)
# 开始画直方图
#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.figure()
plt.title('灰度图像的直方图')
# 直方图的横坐标
plt.xlabel('pixl')
# 直方图的纵坐标
plt.ylabel('number')
plt.plot(hist)
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
except Exception as e:
print('error\r\n',e)
(三)使用OpenCV对图片进行点运算,以及gamma矫正,
点运算:
import cv2
a = cv2.imread('./rgb.bmp')
b = a
c = a+b
d = cv2.add(a,b)
cv2.imshow('lena', a)
cv2.imshow('+', c)
cv2.imshow('cv2.add', d)
cv2.waitKey()
cv2.destoyAllWindows()
Gamma矫正
import cv2
import numpy as np
def gamma_trans(img, r):
return np.power(img,r)
# 加载图片,把图像元素的数据类型转换成浮点数,处于255,把元素数值控制在0-1之间
img = cv2.imread('./rgb.bmp', cv2.IMREAD_UNCHANGED).astype(np.float32)/255
cv2.imshow('origin', img)
# 执行Gamma矫正
l = [0.5, 0.8, 1.5]
for i in l:
cv2.imshow('gamma'+str(i), gamma_trans(img, i))
cv2.waitKey()
cv2.destroyAllWindows()
(四)使用OpenCV对图片进行均值滤波、高斯滤波、中值滤波
import cv2
try:
lena = cv2.imread('./rgb.bmp', cv2.IMREAD_UNCHANGED)
# 均值滤波
r1 = cv2.blur(lena, (5,5))
# 高斯滤波
r2 = cv2.GaussianBlur(lena, (5,5), 0,0)
# 中值滤波
r3 = cv2.medianBlur(lena, 3)
cv2.imshow('origin', lena)
cv2.imshow(u'blur', r1)
cv2.imshow(u'gaussianBlur', r2)
cv2.imshow(u'medianBlur', r3)
cv2.waitKey()
cv2.destroyAllWindows()
except Exception as e:
print('error\r\n', e)
Comments | NOTHING