import cv2 import numpy as np from bgr_detector import BGR, empty path = 'test.png' cv2.namedWindow("TrackBars") cv2.resizeWindow("TrackBars", 640, 250) cv2.createTrackbar("Hue Min", "TrackBars", 0, 179, empty) cv2.createTrackbar("Hue Max", "TrackBars", 19, 179, empty) cv2.createTrackbar("Sat Min", "TrackBars", 110, 255, empty) cv2.createTrackbar("Sat Max", "TrackBars", 240, 255, empty) cv2.createTrackbar("Val Min", "TrackBars", 153, 255, empty) cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty) while True: img = cv2.imread(path) bgr = BGR(img) imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) h_min = cv2.getTrackbarPos("Hue Min", "TrackBars") h_max = cv2.getTrackbarPos("Hue Max", "TrackBars") s_min = cv2.getTrackbarPos("Sat Min", "TrackBars") s_max = cv2.getTrackbarPos("Sat Max", "TrackBars") v_min = cv2.getTrackbarPos("Val Min", "TrackBars") v_max = cv2.getTrackbarPos("Val Max", "TrackBars") print(h_min, h_max, s_min, s_max, v_min, v_max) lower = np.array([h_min, s_min, v_min]) upper = np.array([h_max, s_max, v_max]) mask = cv2.inRange(imgHSV, lower, upper) imgResult = cv2.bitwise_and(img, img, mask=mask) imgStack = bgr.stackImages(0.5, ([img, imgHSV], [mask, imgResult])) cv2.imshow("Stacked Images", imgStack) if cv2.waitKey(1) & 0xFF == ord("q"): # 按q退出 break if cv2.getWindowProperty('Stacked Images',cv2.WND_PROP_VISIBLE)<1.0:#鼠标点击关闭 break解释一下每行代码什么意思
时间: 2024-02-26 13:52:21 浏览: 119
import cv2: 导入OpenCV库,用于图像处理和计算机视觉任务。
import numpy as np: 导入NumPy库,用于处理数组和矩阵。
from bgr_detector import BGR, empty: 导入自定义的bgr_detector模块中的BGR类和empty函数。
path = 'test.png': 定义图像路径。
cv2.namedWindow("TrackBars"): 创建名为“TrackBars”的窗口。
cv2.resizeWindow("TrackBars", 640, 250): 将窗口大小设置为640x250像素。
cv2.createTrackbar("Hue Min", "TrackBars", 0, 179, empty): 在“TrackBars”窗口中创建一个名为“Hue Min”的滑动条,范围为0-179,初始值为0。
cv2.createTrackbar("Hue Max", "TrackBars", 19, 179, empty): 在“TrackBars”窗口中创建一个名为“Hue Max”的滑动条,范围为0-179,初始值为19。
cv2.createTrackbar("Sat Min", "TrackBars", 110, 255, empty): 在“TrackBars”窗口中创建一个名为“Sat Min”的滑动条,范围为0-255,初始值为110。
cv2.createTrackbar("Sat Max", "TrackBars", 240, 255, empty): 在“TrackBars”窗口中创建一个名为“Sat Max”的滑动条,范围为0-255,初始值为240。
cv2.createTrackbar("Val Min", "TrackBars", 153, 255, empty): 在“TrackBars”窗口中创建一个名为“Val Min”的滑动条,范围为0-255,初始值为153。
cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty): 在“TrackBars”窗口中创建一个名为“Val Max”的滑动条,范围为0-255,初始值为255。
while True: 创建一个无限循环,用于不断读取图像并进行处理。
img = cv2.imread(path): 读取指定路径的图像。
bgr = BGR(img): 创建BGR对象,用于后续处理。
imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV): 将图像从BGR色彩空间转换为HSV色彩空间。
h_min = cv2.getTrackbarPos("Hue Min", "TrackBars"): 获取滑动条“Hue Min”的当前值。
h_max = cv2.getTrackbarPos("Hue Max", "TrackBars"): 获取滑动条“Hue Max”的当前值。
s_min = cv2.getTrackbarPos("Sat Min", "TrackBars"): 获取滑动条“Sat Min”的当前值。
s_max = cv2.getTrackbarPos("Sat Max", "TrackBars"): 获取滑动条“Sat Max”的当前值。
v_min = cv2.getTrackbarPos("Val Min", "TrackBars"): 获取滑动条“Val Min”的当前值。
v_max = cv2.getTrackbarPos("Val Max", "TrackBars"): 获取滑动条“Val Max”的当前值。
lower = np.array([h_min, s_min, v_min]): 创建一个3维NumPy数组,存储HSV色彩空间中的最低值。
upper = np.array([h_max, s_max, v_max]): 创建一个3维NumPy数组,存储HSV色彩空间中的最高值。
mask = cv2.inRange(imgHSV, lower, upper): 通过使用cv2.inRange函数,创建掩膜图像,其中掩膜图像中的值为1表示该位置在HSV颜色空间中的值在定义的范围内,否则为0。
imgResult = cv2.bitwise_and(img, img, mask=mask): 使用cv2.bitwise_and函数,将原始图像和掩膜图像进行按位与运算,得到掩膜图像中非零像素对应的原始图像像素。
imgStack = bgr.stackImages(0.5, ([img, imgHSV], [mask, imgResult])): 将4个图像以网格状的形式叠加在一起,并创建一个名为“Stacked Images”的窗口来显示叠加后的图像。其中包括原始图像、HSV颜色空间图像、掩膜图像和最终结果图像。
if cv2.waitKey(1) & 0xFF == ord("q"): 当用户按下键盘上的“q”键时,退出循环。
if cv2.getWindowProperty('Stacked Images',cv2.WND_PROP_VISIBLE)<1.0: 当用户点击窗口关闭按钮时,退出循环。
阅读全文