欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OpenCV半小时掌握基本操作之图像处理

程序员文章站 2022-07-03 21:30:02
目录hsvyuvbinarybinary inversetrunctozerotozero inverse【opencv】⚠️高手勿入! 半小时学会基本操作⚠...

【opencv】⚠️高手勿入! 半小时学会基本操作⚠️图像处理

概述

opencv 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 opencv 的世界.

OpenCV半小时掌握基本操作之图像处理

图像处理

图像处理是非常基础和关键的, 今天就带大家来一起了解一下图像处理.

OpenCV半小时掌握基本操作之图像处理

转换图像

cv.cvtcolor可以帮助我们转换图片通道.

格式:

cv2.cvtcolor(src, code[, dst[, dstcn]])

参数:

  • src: 需要转换的图片
  • code: 颜色空间转换码
  • dst: 输出图像大小深度相同, 可选参数
  • descn: 输出图像的颜色通道, 可选参数

转换成灰度图

rgb 到灰度图转换公式:

y' = 0.299 r + 0.587 g + 0.114 b

例子:

# 读取数据
img = cv2.imread("cat.jpg")

# 转换成灰度图
img_gray = cv2.cvtcolor(img, cv2.color_bgr2gray)

# 输出维度
print(img_gray.shape)  # (554, 640)

# 展示图像
cv2.imshow("img_gray", img_gray)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

hsv

hsv (hue, saturation, value) 是根据颜色的直观特性由 a.r. smith 在 1978 年创建的一种颜色空间.

例子:

# 转换成hsv
img_hsv = cv2.cvtcolor(img, cv2.color_bgr2hsv)

# 输出维度
print(img_hsv.shape)  # (554, 640, 3)

# 展示图像
cv2.imshow("img_hsv", img_hsv)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

yuv

yuv 是一种颜色编码的方法, 主要用在视频, 图形处理流水线中.

例子:

# 读取数据
img = cv2.imread("cat.jpg")

# 转换成hsv
img_yuv = cv2.cvtcolor(img, cv2.color_bgr2yuv)

# 输出维度
print(img_yuv.shape)  # (554, 640, 3)

# 展示图像
cv2.imshow("img_yuv", img_yuv)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

二值化操作

格式:

ret, dst = cv2.threshold(src, thresh, maxval, type)

参数:

  • src: 需要转换的图
  • thresh: 阈值
  • maxval: 超过阈值所赋的值
  • type: 二值化操作类型

返回值:

  • ret: 输入的阈值
  • dst: 处理好的图片

原图

OpenCV半小时掌握基本操作之图像处理

binary

大于阈值的设为 255, 低于或等于阈值的为 0.

例子:

# 读取数据
img_gray = cv2.imread("cat_gray.jpg")

# 二值化
ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.thresh_binary)

# 图片展示
cv2.imshow("thresh1", thresh1)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

binary inverse

与 binary 相反.

例子:

# 读取数据
img_gray = cv2.imread("cat_gray.jpg")

# 二值化
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.thresh_binary_inv)

# 图片展示
cv2.imshow("thresh2", thresh2)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

trunc

大于阈值的设为 255, 低于或等于阈值的不变.

例子:

# 读取数据
img_gray = cv2.imread("cat_gray.jpg")

# 截断
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.thresh_trunc)

# 图片展示
cv2.imshow("thresh3", thresh3)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

tozero

大于阈值部分不变, 否则设为 0.

代码:

# 读取数据
img_gray = cv2.imread("cat_gray.jpg")

# tozero
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.thresh_tozero)

# 图片展示
cv2.imshow("thresh4", thresh4)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

tozero inverse

与 tozero 相反.

代码:

# 读取数据
img_gray = cv2.imread("cat_gray.jpg")

# tozero
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.thresh_tozero_inv)

# 图片展示
cv2.imshow("thresh5", thresh5)
cv2.waitkey(0)
cv2.destroyallwindows()

输出结果:

OpenCV半小时掌握基本操作之图像处理

到此这篇关于opencv半小时掌握基本操作之图像处理的文章就介绍到这了,更多相关opencv图像处理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!