【Python】OpenCV库学习笔记(三)

OpenCV库学习笔记(三)

  • 1. inRange函数实现HSV图片物体追踪
  • 2. 通道分离与合并
  • 3. 像素运算
    • 3.1 算术运算
      • 3.1.1 加减乘除运算
      • 3.1.2 应用:调整亮度与对比度
    • 3.2 逻辑运算

1. inRange函数实现HSV图片物体追踪

  • 将图像转化为HSV后通过inRange函数可以定位颜色块
def inRange(src, lowerb, upperb, dst=None)
  • src表示图片

  • lowerb是一个数组,用于存放要追踪的颜色hmin、smin、vmin三个值组成的数组

  • upperb是一个数组,用于存放要追踪的颜色hmax、smax、vmax三个值组成的数组

  • 返回值:返回二值化图像

示例:提取图像中绿色颜色

import cv2 as cv
import numpy


def extrace_object_demo():
    capture = cv.VideoCapture("")   # 填入路径
    while(True):
        ret, frame = capture.read() # 读取视频的每一帧图片放进frame中
        if ret == False:    # ret是False表示视频读取完毕
            break;
        hsv = cv.cvtColor(frame, cv.COLOR_RGB2HSV) # 将每一帧变成HSV图片
        # 将要过滤出来的绿色的hsv三个值的最高值和最低值分别放入数组中
        lower_green_hsv = numpy.array([35, 43, 46])
        upper_green_hsv = numpy.array([77, 255, 255])
        # 返回二值化图像,其中绿色的物体全部变成白色,其他颜色全部变成黑色
        mask = cv.inRange(hsv, lower_green_hsv, upper_green_hsv)
        cv.imshow("track green", mask)   # 展示图片
        c = cv.waitKey(40)
        if c == 27:     # 27代表esc(escape)
            break;

【Python】OpenCV库学习笔记(三)_第1张图片

将视频每一帧的图片中的绿色全部提取出来,在左边的二值化图像中用白色表示,其他颜色全部变成黑色

2. 通道分离与合并

  • 使用split函数将图片的三个通道分离出来
import cv2 as cv
import numpy

image = cv.imread("01.jpg")
B, G, R = cv.split(image)	# 将图片分解成RGB三个通道
cv.imshow("image", image)
cv.imshow("R", R)
cv.imshow("G", G)
cv.imshow("B", B)
cv.waitKey(0)
cv.destroyAllWindows()

  • 使用merge函数将三个通道合并
import cv2 as cv
import numpy

image = cv.imread("01.jpg")
B, G, R = cv.split(image)
cv.imshow("image", image)
change_image = cv.merge([B, G, R])	# 将RGB三个通道合并
cv.imshow("change_image", change_image)
cv.waitKey(0)
cv.destroyAllWindows()

3. 像素运算

3.1 算术运算

3.1.1 加减乘除运算

import cv2 as cv
import numpy

# 像素 加 运算
def add_demo(image1, image2):
    final_image = cv.add(image1, image2)
    cv.imshow("add", final_image)

# 像素 减 运算
def subtract_demo(image1, image2):
    final_image = cv.subtract(image1, image2)
    cv.imshow("subtract", final_image)

# 像素 乘 运算
def divide_demo(image1, image2):
    final_image = cv.divide(image1, image2)
    cv.imshow("divide", final_image)

# 像素 除 运算
def multiply_demo(image1, image2):
    final_image = cv.multiply(image1, image2)
    cv.imshow("multiply", final_image)

image1 = cv.imread("01.jpg")
add_demo(image1, image1)
subtract_demo(image1, image1)
divide_demo(image1, image1)
multiply_demo(image1, image1)
cv.waitKey(0)
cv.destroyAllWindows()

【Python】OpenCV库学习笔记(三)_第2张图片

3.1.2 应用:调整亮度与对比度

  • TODO

3.2 逻辑运算

  • TODO

你可能感兴趣的:(#,OpenCV,opencv,计算机视觉,cv,像素运算,物体追踪)