cv2怎么获取红色像素点的坐标
时间: 2024-08-13 09:06:51 浏览: 48
在OpenCV (cv2) 中,你可以使用`cv2.inRange()`函数来创建一个二值图像,区分出特定的颜色,比如红色。然后,可以结合`cv2.findContours()`和`cv2.boundingRect()`来找到这些红色区域的轮廓,并从轮廓中提取出每个红色像素点的坐标。
以下是一个简单的步骤:
1. **读取和转换图像**:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 使用BGR颜色空间,因为OpenCV默认是这种格式
lower_red = np.array([0, 0, 100]) # 设置红色的下限(例如,红色可能在HSV中的B通道较强)
upper_red = np.array([10, 255, 255]) # 设置红色的上限
mask = cv2.inRange(img, lower_red, upper_red)
```
2. **查找轮廓**:
```python
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
3. **获取轮廓内的像素坐标**:
```python
red_points = []
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
red_pixels = img[y:y+h, x:x+w]
# 可能需要进一步处理红色像素点,如使用numpy非零索引找出具体坐标
red_pixel_coords = np.column_stack(np.where(red_pixels.any(axis=0))) # 获取行和列坐标
red_points.extend(red_pixel_coords)
```
阅读全文