【python】摄像头调用马赛克恶搞
摄像头调用
使用python调用电脑摄像头
代码展示
import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
retval, frame = cap.read()
cv2.imshow('Live', frame)
if cv2.waitKey(5) >= 0:
break
shao
安装库
这个代码引用了第三方库在运行前我们提前安装一下
打开电脑终端,输入以下命令,等待即可,(要在网络环境好的情况下)
pip install opencv-python
代码解释
打开摄像头获取视频流:
cap = cv2.VideoCapture(0)
这里创建了一个 VideoCapture 对象 cap,参数 0 表示使用默认的摄像头设备(如果有多个摄像头,可更改参数为对应的摄像头索引,比如 1、2 等),这个对象用于从摄像头捕获视频帧数据。
循环读取和显示视频帧
while(cap.isOpened()):
retval, frame = cap.read()
cv2.imshow('Live', frame)
检测按键并退出循环
if cv2.waitKey(5) >= 0:
break
cv2.waitKey(5) 函数会等待用户按键操作,参数 5 表示等待的时间(单位是毫秒),在这个时间内如果用户按下了键盘上的任意键,该函数会返回按键对应的 ASCII 码值(如果没有按键则返回 -1),当返回值大于等于 0 时,就意味着有按键按下,通过 break 语句跳出循环,结束视频帧的读取和显示过程。
实时视频画面添加马赛克效果
以下代码可以实现对摄像头实时获取的视频画面中的特定区域(这里以图像中心区域为例,你可以自行修改范围)添加马赛克效果,让画面呈现出一种模糊、块状的样子。(画风离谱)
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while cap.isOpened():
retval, frame = cap.read()
if retval:
height, width = frame.shape[:2]
# 定义要添加马赛克的区域(这里以图像中心部分为例)
x_start = width // 4
y_start = height // 4
x_end = width * 3 // 4
y_end = height * 3 // 4
# 获取要马赛克的区域图像
region = frame[y_start:y_end, x_start:x_end]
# 缩小图像尺寸(马赛克的原理是用块状像素表示,这里先缩小)
small = cv2.resize(region, (0, 0), fx=0.1, fy=0.1)
# 再放大回原尺寸,就形成了马赛克效果
mosaic = cv2.resize(small, (x_end - x_start, y_end - y_start), interpolation=cv2.INTER_NEAREST)
# 将马赛克区域替换原图像中的对应区域
frame[y_start:y_end, x_start:x_end] = mosaic
cv2.imshow('Mosaic Live', frame)
if cv2.waitKey(5) >= 0:
break
cap.release()
cv2.destroyAllWindows()
就分享到这里,本来还想写点别的摄像头调用的,还有很多有趣的项目,比如人脸识别,实时视频添加卡通化效果,还有素描效果,都是可以做到的,只是一开始写的不满意,回头优化优化在发布
作者:努力的小好