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;
将视频每一帧的图片中的绿色全部提取出来,在左边的二值化图像中用白色表示,其他颜色全部变成黑色
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()
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()
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()