openCV实验3

发布于 2021-12-26  96 次阅读


记录一下方便后面复习


(一)使用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()

显示结果:img

保存结果:

img

(二)使用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)

img

(三)使用OpenCV对图片进行点运算,以及gamma矫正,img

点运算:

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()

img

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()

img

(四)使用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)

img


见其广知其深