前言
提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。
文章目录
- 前言
- 环境搭建
- 读取文件夹中图片并显示
- 打开计算机默认摄像头
- 查看摄像机的基本参数
- [使用手机软件 "IP摄像头",进行连接](#使用手机软件 “IP摄像头”,进行连接)
环境搭建
可参考以下案例进行环境安装
Python+OpenCV 调用手机摄像头并实现人脸识别
读取文件夹中图片并显示
python
import cv2
# 图片的路径(同一文件夹)
image_path = 'test.jpg'
# 使用 OpenCV 读取图片
image = cv2.imread(image_path)
# 检查图片是否正确读取
if image is None:
print(f"无法读取图片: {image_path}")
else:
# 显示图片
cv2.imshow('Image', image)
# 等待用户按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
打开计算机默认摄像头
python
import cv2
def main():
# 打开默认摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("无法打开摄像头")
return
try:
while True:
# 读取一帧视频
ret, frame = cap.read()
if not ret:
print("无法接收帧,退出...")
break
# 显示帧
cv2.imshow('Camera', frame)
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
# 释放摄像头
cap.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
查看摄像机的基本参数
python
import cv2
def print_camera_parameters(cap):
# 打印摄像头的一些常见参数
print("帧宽度: ", cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print("帧高度: ", cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("FPS (帧率): ", cap.get(cv2.CAP_PROP_FPS))
print("曝光时间: ", cap.get(cv2.CAP_PROP_EXPOSURE))
print("自动曝光: ", cap.get(cv2.CAP_PROP_AUTO_EXPOSURE))
print("自动对焦是否开启: ", cap.get(cv2.CAP_PROP_AUTOFOCUS))
# 可以根据需要添加更多参数
def main():
# 打开默认摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("无法打开摄像头")
return
# 打印摄像头参数
print_camera_parameters(cap)
# 释放摄像头
cap.release()
if __name__ == "__main__":
main()
查看计算机摄像头是否具有自动聚焦功能
python
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("无法打开摄像头")
else:
# 尝试设置自动对焦
success = cap.set(cv2.CAP_PROP_AUTOFOCUS, 1)
if success:
print("摄像头可能具有对焦功能")
else:
print("摄像头可能没有对焦功能或无法通过软件控制")
# 释放摄像头
cap.release()
打开摄像头并启用自动对焦
python
import cv2
def set_auto_focus(cap, enable=True):
# 尝试设置自动对焦
# 注意:这个方法依赖于摄像头的驱动和DirectShow的支持,可能不适用于所有摄像头
try:
# 使用CAP_PROP_AUTOFOCUS属性来启用或禁用自动对焦
# 1表示启用,0表示禁用
cap.set(cv2.CAP_PROP_AUTOFOCUS, 1 if enable else 0)
except Exception as e:
print(f"无法设置自动对焦: {e}")
def main():
# 打开默认摄像头
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 使用DirectShow后端
if not cap.isOpened():
print("无法打开摄像头")
return
# 尝试启用自动对焦
set_auto_focus(cap, enable=True)
try:
while True:
# 读取一帧视频
ret, frame = cap.read()
if not ret:
print("无法接收帧,退出...")
break
# 显示帧
cv2.imshow('Camera', frame)
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
# 释放摄像头
cap.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
使用手机软件 "IP摄像头",进行连接
可参考以下案例进行环境安装
Python+OpenCV 调用手机摄像头并实现人脸识别
python
# coding=utf-8
import cv2
if __name__ == '__main__':
# 开启ip摄像头
cv2.namedWindow("camera", 1)
# 这个地址就是下面记下来的局域网IP
video = "http://admin:admin@10.19.122.218:8081/" # 此处@后的ipv4 地址需要修改为自己的地址
cap = cv2.VideoCapture(video)
# 检查手机相机是否打开成功
if not cap.isOpened():
print("camera open failed!")
exit()
try:
while True:
# 读取一帧视频
ret, frame = cap.read()
if not ret:
print("无法接收帧,退出...")
break
# 显示帧
cv2.imshow('Camera', frame)
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
# 释放摄像头
cap.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()