通过摄像头捕获人像,对人像进行马赛克处理。列出代码
时间: 2024-03-07 17:53:52 浏览: 20
以下是使用Python和OpenCV库实现通过摄像头捕获人像,并对人像进行马赛克处理的代码示例:
```python
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取一帧图像
ret, frame = cap.read()
# 将图像进行马赛克处理
# 方法一:缩放后再放大
scale_percent = 10 # 缩放比例
width = int(frame.shape[1] * scale_percent / 100)
height = int(frame.shape[0] * scale_percent / 100)
dim = (width, height)
small_frame = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)
result_frame = cv2.resize(small_frame, frame.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)
# 方法二:像素化
# blockSize = 25 # 块大小
# result_frame = cv2.resize(frame, None, fx=1/blockSize, fy=1/blockSize, interpolation=cv2.INTER_LINEAR)
# result_frame = cv2.resize(result_frame, frame.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)
# 显示图像
cv2.imshow('frame', result_frame)
# 按下q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在上述代码中,我们通过`cv2.VideoCapture(0)`打开了摄像头,并通过`cap.read()`读取了一帧图像。接着,我们使用了两种不同的方法对图像进行马赛克处理,分别是缩放和像素化。最后,我们使用`cv2.imshow()`来显示处理后的图像,同时使用`cv2.waitKey()`来等待用户按下q键退出循环。最后,我们通过`cap.release()`释放了摄像头资源,并通过`cv2.destroyAllWindows()`关闭了所有的窗口。