opencv颜色空间转换、阈值构建掩膜、原图像和掩模进行位运算
注意:转HSV颜色空间后,可以进行颜色阈值调整构建掩膜后的图像是黑白的对原图像和掩模进行位运算后,图像就只有你想要的颜色阈值,其他颜色都变为黑色import cv2import numpy as npcap = cv2.VideoCapture(0)while (1):# 获取每一帧ret, frame = cap.read()# 转换到 HSVhsv = cv2.cvtColor(frame,
·
注意:
- 转HSV颜色空间后,可以进行颜色阈值调整
- 构建掩膜后的图像是黑白的
- 对原图像和掩模进行位运算后,图像就只有你想要的颜色阈值,其他颜色都变为黑色
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while cap.isOpened():
# 获取每一帧
ret, frame = cap.read()
# 转换到 HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 设定蓝色的阈值
lower_blue = np.array([110, 50, 50])
upper_blue = np.array([130, 255, 255])
# 根据阈值构建掩模
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 对原图像和掩模进行位运算
res = cv2.bitwise_and(frame, frame, mask=mask)
# 显示图像
cv2.imshow('frame', frame)
cv2.imshow('mask', mask)
cv2.imshow('res', res)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
# 关闭窗口
cv2.destroyAllWindows()
需求:提取任意四边形区域
做法:根据4点坐标,截取先ROI区域,掩膜方法
import cv2
import numpy as np
# 读取图像
image = cv2.imread('t1.png')
# 定义四边形的四个顶点坐标 [x, y]
points = np.array([
[197, 137], # 左上点
[286, 163], # 右上点
[232, 278], # 右下点
[123, 241] # 左下点
], dtype=np.int32)
# 在原图上绘制四边形
cv2.polylines(image, [points], True, (0, 255, 0), 2) # 绿色线条,线宽2
# 计算四边形的边界框
x, y, w, h = cv2.boundingRect(points)
# 截取感兴趣区域(ROI)
roi = image[y:y+h, x:x+w].copy()
# 调整顶点坐标为ROI内的相对坐标
roi_points = points - np.array([[x, y]])
# 创建与ROI大小相同的掩码
mask = np.zeros_like(roi)
# 在掩码上绘制白色四边形
cv2.fillPoly(mask, [roi_points], (255, 255, 255))
# 按位与操作,提取四边形内的图像
result = cv2.bitwise_and(roi, mask)
# 显示结果
cv2.imshow('Original', image)
# cv2.waitKey(0)
cv2.imshow('ROI', roi)
# cv2.waitKey(0)
cv2.imshow('Mask', mask)
# cv2.waitKey(0)AA
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
更多推荐
所有评论(0)