python用hsv分割红色区域计算该面积,然后分割蓝色区域计算该面积,二者面积分别计算圆直径相减后输出
时间: 2023-09-06 09:13:10 浏览: 91
以下是将上面两段代码结合起来,分割红色和蓝色区域并计算两个区域面积,最后计算圆直径之差并输出的 Python 代码:
```python
import cv2
import math
# 读取图像
img = cv2.imread("test.jpg")
# 转换到 HSV 空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义红色和蓝色的阈值范围
lower_red = (0, 50, 50)
upper_red = (10, 255, 255)
lower_blue = (110, 50, 50)
upper_blue = (130, 255, 255)
# 对红色和蓝色区域进行分割
mask_red = cv2.inRange(hsv, lower_red, upper_red)
mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
# 计算红色和蓝色区域的面积
area_red = cv2.countNonZero(mask_red)
area_blue = cv2.countNonZero(mask_blue)
# 计算圆直径之差
d = math.sqrt(4 * area_red / math.pi) - math.sqrt(4 * area_blue / math.pi)
# 输出结果
print("红色区域面积:", area_red)
print("蓝色区域面积:", area_blue)
print("圆直径之差:", d)
# 显示分割结果
cv2.imshow("Red Mask", mask_red)
cv2.imshow("Blue Mask", mask_blue)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码与之前的代码基本相同,只是在计算完红色和蓝色区域面积后,计算了两个圆的直径之差,并将结果输出。注意,`d` 的值可能为负数,表示蓝色区域面积大于红色区域面积,此时圆直径之差为负数。
阅读全文