flower.md 2.4 KB
Newer Older
F
feilong 已提交
1 2 3 4
# 提取花瓣

OpenCV 的颜色空间主要有 BGR、HSV、Lab等,`cvtColor` 函数可以让图像在不同颜色空间转换。例如通过将花的图像转换到 HSV 颜色空间,在HSV空间内过滤出只含有花瓣颜色的像素,从而提取出花瓣。

F
feilong 已提交
5 6
![](https://gitcode.net/csdn/skill_tree_git_md_linux/-/raw/master/data/1.OpenCV初阶/3.图像增强和滤波/1.彩色空间/flower_only.jpeg)
<br/>
F
feilong 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

以下实现正确的是?

## 答案

```python
import numpy as np
import cv2

if __name__ == '__main__':
    flower = cv2.imread('flower.jpeg', -1)
    hsv = cv2.cvtColor(flower, cv2.COLOR_BGR2HSV)

    lower_red = np.array([0, 20, 100])
    upper_red = np.array([10, 255, 255])

    mask = cv2.inRange(hsv, lower_red, upper_red)
    res = cv2.bitwise_and(flower, flower, mask=mask)

    images = np.concatenate((flower, res), axis=1)
    cv2.imshow('flower', images)
    cv2.waitKey()
    cv2.destroyAllWindows()
```

## 选项

### 颜色空间转换错误

```python
import numpy as np
import cv2

if __name__ == '__main__':
    flower = cv2.imread('flower.jpeg', -1)
    hsv = cv2.cvtColor(flower, cv2.COLOR_BGR2GRAY)

    lower_red = np.array([0, 20, 100])
    upper_red = np.array([10, 255, 255])

    mask = cv2.inRange(hsv, lower_red, upper_red)
    res = cv2.bitwise_and(flower, flower, mask=mask)

    images = np.concatenate((flower, res), axis=1)
    cv2.imshow('flower', images)
    cv2.waitKey()
    cv2.destroyAllWindows()
```

### 色调上下限错误

```python
import numpy as np
import cv2

if __name__ == '__main__':
    flower = cv2.imread('flower.jpeg', -1)
    hsv = cv2.cvtColor(flower, cv2.COLOR_BGR2GRAY)

    lower_red = np.array([0, 0, 0])
    upper_red = np.array([0, 0, 255])

    mask = cv2.inRange(hsv, lower_red, upper_red)
    res = cv2.bitwise_and(flower, flower, mask=mask)

    images = np.concatenate((flower, res), axis=1)
    cv2.imshow('flower', images)
    cv2.waitKey()
    cv2.destroyAllWindows()
```

### 颜色空间转换错误2

```python
import numpy as np
import cv2

if __name__ == '__main__':
    flower = cv2.imread('flower.jpeg', -1)
    hsv = cv2.cvtColor(flower, cv2.COLOR_RGB2HSV)

    lower_red = np.array([0, 20, 100])
    upper_red = np.array([10, 255, 255])

    mask = cv2.inRange(hsv, lower_red, upper_red)
    res = cv2.bitwise_and(flower, flower, mask=mask)

    images = np.concatenate((flower, res), axis=1)
    cv2.imshow('flower', images)
    cv2.waitKey()
    cv2.destroyAllWindows()
```