opencv拍照并颜色提取
时间: 2023-09-04 09:08:14 浏览: 86
opencv摄像头捕获识别颜色
可以使用OpenCV库来实现拍照和颜色提取的功能。
首先,需要导入OpenCV库和NumPy库:
```python
import cv2
import numpy as np
```
然后,使用`cv2.VideoCapture()`函数来打开摄像头。如果有多个摄像头,可以通过参数来选择摄像头:
```python
cap = cv2.VideoCapture(0) # 打开第一个摄像头
```
接下来,可以使用`cap.read()`函数来读取摄像头的每一帧,并显示在屏幕上:
```python
while True:
ret, frame = cap.read() # 读取每一帧
cv2.imshow('frame', frame) # 显示帧
if cv2.waitKey(1) == ord('q'): # 如果按下q键,退出循环
break
```
在窗口中显示的帧可以通过按下`q`键退出循环停止摄像头捕捉。
接下来,可以使用`cv2.imwrite()`函数来保存捕捉到的帧:
```python
cv2.imwrite('photo.jpg', frame) # 保存捕捉到的帧
```
最后,可以使用`cv2.imread()`函数读取保存的图片,并使用`cv2.cvtColor()`函数将图片转换为HSV颜色空间:
```python
img = cv2.imread('photo.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
```
现在,可以使用NumPy库来选择想要提取的颜色范围并创建掩码:
```python
lower_range = np.array([0, 50, 50]) # 最低颜色范围
upper_range = np.array([10, 255, 255]) # 最高颜色范围
mask = cv2.inRange(hsv, lower_range, upper_range) # 创建掩码
```
最后,可以使用`cv2.bitwise_and()`函数将原始图像和掩码相乘,提取出指定颜色范围的图像:
```python
result = cv2.bitwise_and(img, img, mask=mask) # 提取颜色范围的图像
cv2.imshow('result', result) # 显示结果图像
cv2.waitKey(0) # 等待按下任意键
cv2.destroyAllWindows() # 销毁窗口
```
这样,就可以实现拍照并提取指定颜色范围的功能了。完整代码如下:
```python
import cv2
import numpy as np
cap = cv2.VideoCapture(0) # 打开第一个摄像头
while True:
ret, frame = cap.read() # 读取每一帧
cv2.imshow('frame', frame) # 显示帧
if cv2.waitKey(1) == ord('q'): # 如果按下q键,退出循环
break
cv2.imwrite('photo.jpg', frame) # 保存捕捉到的帧
img = cv2.imread('photo.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_range = np.array([0, 50, 50]) # 最低颜色范围
upper_range = np.array([10, 255, 255]) # 最高颜色范围
mask = cv2.inRange(hsv, lower_range, upper_range) # 创建掩码
result = cv2.bitwise_and(img, img, mask=mask) # 提取颜色范围的图像
cv2.imshow('result', result) # 显示结果图像
cv2.waitKey(0) # 等待按下任意键
cv2.destroyAllWindows() # 销毁窗口
cap.release() # 释放摄像头
```
阅读全文