python opencv 单通道二值图像 提供坐标值x y 以及半径r 如何令图像上该圆内的区域像素值为0
时间: 2024-03-05 14:51:57 浏览: 106
可以使用OpenCV中的cv2.circle()函数来画一个圆,然后遍历该圆内的每个像素,将像素值设置为0。
具体的实现方法如下:
1. 使用cv2.circle()函数画出圆。
```python
import cv2
# 读取单通道二值图像
img = cv2.imread('binary_image.png', 0)
# 坐标值和半径
x, y, r = 100, 100, 50
# 画圆
cv2.circle(img, (x, y), r, (255, 255, 255), -1)
```
2. 遍历圆内的每个像素,并将像素值设置为0。
```python
# 遍历圆内的每个像素
for i in range(x-r, x+r):
for j in range(y-r, y+r):
# 判断当前像素是否在圆内
if (i-x)**2 + (j-y)**2 <= r**2:
# 将像素值设置为0
img[j, i] = 0
```
完整代码如下:
```python
import cv2
# 读取单通道二值图像
img = cv2.imread('binary_image.png', 0)
# 坐标值和半径
x, y, r = 100, 100, 50
# 画圆
cv2.circle(img, (x, y), r, (255, 255, 255), -1)
# 遍历圆内的每个像素
for i in range(x-r, x+r):
for j in range(y-r, y+r):
# 判断当前像素是否在圆内
if (i-x)**2 + (j-y)**2 <= r**2:
# 将像素值设置为0
img[j, i] = 0
# 显示处理后的图像
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意:上述代码中的坐标值是以左上角为原点进行计算的,如果你的坐标系不同,请根据实际情况进行调整。
阅读全文