opencv 基础学习二

目录

1. 绘制中文

2. 鼠标事件

3. 滑动条

4. 拆分合并通道

5. 图像运算

6.图像融合

7. 图像位运算

71. 按位与bitwise_and(图1,图2)

7.2 按位或bitwise_or(图1,图2)

7.3 按位非bitwise_not(图像)

7.4 按位异或bitwise_xor(图1,图2)

8. HSV颜色空间

8.1 HSV介绍​编辑

​编辑

8.2 转HSV颜色空间

8.3 HSV颜色范围

9.图像几何变换

 9.1 旋转

9.2 平移

9.3 仿射变换

9.4 自由旋转

10.透视变换


1. 绘制中文

解释:

        Image,ImageFont,ImageDraw是Pillow包下的模块,ImageFont.truetype(字体类型,尺寸)返回一个字体对象

        之所以在学习opencv之前学习Pillow的原因是,Pillow可以支持中文,而opencv不支持中文。所以当图像中需要写中文时,可以使用Pillow

2. 鼠标事件

解释:鼠标回调函数,def mouse_call_back(event, x, y, flags, params):

这个函数会在鼠标事件发生时被调用。参数包括:

  • event: 事件类型(如鼠标按下、移动、抬起等)。
  • x, y: 鼠标当前的坐标。
  • flags: 额外信息(如鼠标按键状态)。
  • params: 附加参数(未使用)。

鼠标事件类型

  • cv2.EVENT_LBUTTONDOWN: 鼠标左键按下。
  • cv2.EVENT_MOUSEMOVE: 鼠标移动。
  • cv2.EVENT_LBUTTONUP: 鼠标左键抬起。

回调函数

  • 在设置鼠标回调时,必须提前创建窗口。因为setMouseCallback当填写的窗口名不存在该窗口时,他不会自动创建窗口,需要手动提前创建窗口
  • 设置鼠标回调方法:cv2.setMouseCallback("win", mouse_call_back),第一个是窗口名,第二个是鼠标回调函数名称

3. 滑动条

解释: cv2.createTrackbar("R","Color Window",)创建三个滑动条,分别用于调整红色、绿色和蓝色的强度:

  • 滑动条的名称是 "R"、"G" 和 "B"。
  • 每个滑动条的初始值为 1,范围为 0 到 255(包括边界)。
  • 每当滑动条的值变化时,会调用 change 函数。

使用 cv2.getTrackbarPos() 获取当前滑动条的值(红色、绿色和蓝色的强度)。

将获取的 RGB 值赋给背景图像 bg,更新为相应的颜色。

4. 拆分合并通道

import cv2

im = cv2.imread("a.jpeg")
b, g, r = cv2.split(im)
# 获取Blue通道
b1 = im[:, :, 0]
# c = np.hstack((b, b1))
c = cv2.merge((b, g, r))
cv2.imshow("im", c)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.split(im)是分割图像为三个单通道的图像

cv2.merge((b,g,r))是合并三个单通道图像为一个BGR图像

5. 图像运算

6.图像融合

解释:使用c = cv2.addWeighted(im01, 0.7, im02, 0.3, 100)函数将两张图像进行加权融合。该函数的参数含义如下:

  • im01: 第一张图像。
  • 0.7: 第一张图像的权重(即贡献度)。
  • im02: 第二张图像。
  • 0.3: 第二张图像的权重。
  • 100: 在加权求和后添加的常数,用于调整亮度。

7. 图像位运算

71. 按位与bitwise_and(图1,图2)

7.2 按位或bitwise_or(图1,图2)

7.3 按位非bitwise_not(图像)

7.4 按位异或bitwise_xor(图1,图2)

8. HSV颜色空间

8.1 HSV介绍

1. Hue(色相)

色相是模型的颜色部分,用0到360度的数字表示

  • Red falls between 0 and 60 degrees.
  • Yellow falls between 61 and 120 degrees.
  • Green falls between 121 and 180 degrees.
  • Cyan falls between 181 and 240 degrees.
  • Blue falls between 241 and 300 degrees.
  • Magenta falls between 301 and 360 degrees.

2. Stauration饱和度

Saturation(饱和度)描述了特定颜色的灰度值,从0到100%。将该分量减少到零会引入更多的灰色并产生褪色效果。有时,饱和度表现为从0到1的范围,其中0是灰色,1是原色。

3. Value(OR Brightness):

Value(OR Brightness):亮度值与饱和度一起工作,描述颜色的亮度或强度,从0到100%,其中0是完全黑色的,100是最亮的,显示最多的颜色。

8.2 转HSV颜色空间

import cv2

im = cv2.imread("a.jpeg")
im1 = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
cv2.imshow("im", im1)
cv2.waitKey(0)
cv2.destroyAllWindows()

解释:cv2.cvtColor(图像,转换模式)

在 OpenCV 中,cv2.cvtColor 函数用于转换图像的颜色空间。常用的转换模式包括:

  1. BGR 到 RGB: cv2.COLOR_BGR2RGB
  2. RGB 到 BGR: cv2.COLOR_RGB2BGR
  3. BGR 到 灰度: cv2.COLOR_BGR2GRAY
  4. 灰度 到 BGR: cv2.COLOR_GRAY2BGR
  5. BGR 到 HSV: cv2.COLOR_BGR2HSV
  6. HSV 到 BGR: cv2.COLOR_HSV2BGR

8.3 HSV颜色范围

注意:OpenCV中HSV的色相范围为[0,179]
饱和度范围为[0,255]
亮度值范围为[0,255]

# 获取颜色在hsv范围
def get_limit(color):
    # 对颜色进行标准化处理
    c = np.uint8([[color]])
    # 将BGR颜色空间转成HSV颜色空间
    hsv = cv2.cvtColor(c, cv2.COLOR_BGR2HSV)
    # 上限和下限
    # hsv[0, 0] 表示图像中的第一个像素。
    # hsv[0, 0, 0] 表示该像素的第一个通道(即色相通道)的值,取值范围是 0 到 179,用来表示颜色的种类。
    # hsv[0, 0, 0](色相),hsv[0, 0, 1](饱和度),hsv[0, 0, 2](明度),
    low = hsv[0, 0, 0] - 10, 100, 100
    up = hsv[0, 0, 0] + 10, 255, 255
    return np.uint8(low), np.uint8(up)

blue = [255, 0, 0]
low, up = get_limit(blue)

当描述一个颜色,例如蓝色:

        表示blue的下限,色相为当前色相-10,饱和度为100,亮度为100

        表示blue的上限,色相为当前色相+10,饱和度为255,亮度为255

注意:红色,因为红色是0到10是下限,159到180是上限

9.图像几何变换

 9.1 旋转

9.2 平移

9.3 仿射变换

9.4 自由旋转

10.透视变换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

serenity宁静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值