怎么计算contours里面的平均颜色
时间: 2024-05-15 16:19:34 浏览: 12
以下是在Python中计算轮廓平均颜色的一种方法:
1. 从图像中获取轮廓。
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
2. 计算每个轮廓的平均颜色。
```python
for c in contours:
mask = np.zeros(gray.shape, np.uint8)
cv2.drawContours(mask, [c], 0, 255, -1)
mean_color = cv2.mean(img, mask=mask)
print(mean_color)
```
在这个例子中,我们对于每个轮廓都创建了一个掩膜,并在这个掩膜上使用cv2.mean()函数来计算平均颜色。这个函数返回一个元组,其中包含每个通道的平均值。
相关问题
contours中的颜色
Contours 中的颜色可以根据具体情况而定。
在 OpenCV 中,findContours() 函数会返回一个轮廓列表,可以使用 drawContours() 函数将轮廓绘制在图像上。drawContours() 函数可以接受一个颜色参数,用于指定绘制轮廓的颜色。
常见的颜色表示方法包括 RGB、BGR、HSV 等。在 OpenCV 中,通常使用 BGR 表示颜色,即对应蓝色(blue)、绿色(green)和红色(red)三个分量。例如,(255, 0, 0) 表示蓝色,(0, 255, 0) 表示绿色,(0, 0, 255) 表示红色。
除了使用固定的颜色值,还可以使用随机颜色为轮廓着色,这样能够更好地区分不同轮廓。可以使用 RNG(随机数生成器)函数生成随机颜色值。例如:
```python
import numpy as np
import cv2
# 生成一张黑色图像
img = np.zeros((512,512,3), np.uint8)
# 生成随机颜色值
rng = np.random.default_rng()
color = tuple(rng.integers(0, 256, size=3))
# 绘制轮廓
contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, color, 3)
# 显示图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
怎么获得contours区域内图像的平均颜色
您可以使用OpenCV中的cv2.mean()函数来获得contours区域内图像的平均颜色。以下是示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.png')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历每个轮廓并计算平均颜色
for contour in contours:
mask = np.zeros(gray.shape, np.uint8)
cv2.drawContours(mask, [contour], 0, 255, -1)
mean_color = cv2.mean(img, mask=mask)
print('Contour mean color:', mean_color)
```
上述代码将遍历每个轮廓并计算其区域内图像的平均颜色,并输出结果。您可以根据需要进行修改和调整。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)