Python OpenCV分割问题
Python OpenCV segmentation problems
我正在尝试通过 Python 和 OpenCV 通过图像处理来跟踪塑料部件的变形。我在零件上放了红色标记,用智能手机拍照,然后将代码放在一起以在图像上找到轮廓,过滤出尺寸合适的轮廓。该代码非常适用于夜间使用智能手机上的闪光灯拍摄的图像,但是当我在没有额外照明的情况下在白天拍摄它们时,我无法在分割图像时排除标记。
我不明白为什么它不起作用,因为标记在图像的 HSV 版本上很明显。我错过了什么吗
代码和图片如下。
代码:
a1 = 0
a2 = 0
a3 = 0
b1 = 187
b2 = 204
b3 = 204
red_lower = np.array([a1,a2,a3], np.uint8)
red_upper = np.array([b1,b2,b3], np.uint8)
img = cv2.imread(img_path)
crop = img[y:y+h, x:x+w]
blur = cv2.blur(crop,(2,2))
hsv = cv2.cvtColor(blur,cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, red_lower, red_upper)
mask_copy = mask.copy()
cnts = cv2.findContours(mask_copy,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
有问题的图片:
HSV 中有问题的图片:
分割后有问题的图片:
您将有效色调范围指定为 0 到 187。
在 OpenCV 中,当以 uint8 值表示时,色相环的范围为 0 到 179(360 度,以 2 度为增量)。
这意味着您刚刚接受了所有色调值。
我正在尝试通过 Python 和 OpenCV 通过图像处理来跟踪塑料部件的变形。我在零件上放了红色标记,用智能手机拍照,然后将代码放在一起以在图像上找到轮廓,过滤出尺寸合适的轮廓。该代码非常适用于夜间使用智能手机上的闪光灯拍摄的图像,但是当我在没有额外照明的情况下在白天拍摄它们时,我无法在分割图像时排除标记。
我不明白为什么它不起作用,因为标记在图像的 HSV 版本上很明显。我错过了什么吗
代码和图片如下。
代码:
a1 = 0
a2 = 0
a3 = 0
b1 = 187
b2 = 204
b3 = 204
red_lower = np.array([a1,a2,a3], np.uint8)
red_upper = np.array([b1,b2,b3], np.uint8)
img = cv2.imread(img_path)
crop = img[y:y+h, x:x+w]
blur = cv2.blur(crop,(2,2))
hsv = cv2.cvtColor(blur,cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, red_lower, red_upper)
mask_copy = mask.copy()
cnts = cv2.findContours(mask_copy,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
有问题的图片:
HSV 中有问题的图片:
分割后有问题的图片:
您将有效色调范围指定为 0 到 187。
在 OpenCV 中,当以 uint8 值表示时,色相环的范围为 0 到 179(360 度,以 2 度为增量)。
这意味着您刚刚接受了所有色调值。