OpenCV 调用手机摄像头
Posted 风信子的猫Redamancy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV 调用手机摄像头相关的知识,希望对你有一定的参考价值。
OpenCV 调用手机摄像头
由于我喜欢做计算机视觉的深度学习的东西,所以对于目标检测和图像分类这样的项目,我想将其用入视频等等中
调用内置电脑摄像头
OpenCV很容易就可以调用内置电脑内置摄像头,只需要用
# 获取摄像头,传入0表示获取系统默认摄像头
cap = cv2.VideoCapture(0)
下载IP摄像头APP
我就在想如何获取手机摄像头,因为我电脑摄像头比较小,我就想用手机摄像头或者外置摄像头,如果是外置摄像头还要买,太贵了,我就想到手机摄像头。
我想啊想,居然发现一个好方法,我们只需要下载一个APP软件即可
也就是!!!IP摄像头,啦啦啦啦啦,这是个好东西
我们在小米商店就可以很容易看到,不过上网看也是可以查到的
连接摄像头
我们可以打开我们的APP,然后打开,会显示以下页面
这个页面中有个局域网,我们其实可以在电脑上输入我们的局域网,我们就可以在电脑上看到自己的摄像头显示的页面了,并且还可以调分辨率,大小等,还有很多好玩的动作检测等等。
比如用我的红米K20 Pro下载后,打开页面是这样的
我们可以看到下面有很多按钮,就有很多功能可以选择,比如分辨率
OpenCV调用手机摄像头 Python脚本
我们手机打开IP摄像头之后,我们就可以运行以下Python脚本
这里提示一下,默认的用户名和密码是admin,这也是我们地址的写法
# coding=utf-8
import cv2
import time
cv2.namedWindow("camera", 1)
# 开启ip摄像头
video = "http://admin:admin@192.168.137.132:8081/" # 此处@后的ipv4 地址需要修改为自己的地址
#!!!!划重点了!!!!这个地址就是上面记下来的局域网IP
capture = cv2.VideoCapture(video)
num = 0;
while True:
success, img = capture.read()
if not success:
print('error')
break
# 不进行旋转
# cv2.imshow("camera", img)
# 获取长宽
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
# 进行旋转
M = cv2.getRotationMatrix2D(center, -90, 1.0)
rotated = cv2.warpAffine(img, M, (w, h))
# 若不关参数,参数也会被旋转,影响效果
# !!!处理帧函数
img = process_frame(rotated)
cv2.imshow("camera", img)
# 按键处理,注意,焦点应当在摄像头窗口,不是在终端命令行窗口
key = cv2.waitKey(10)
if key == 27:
# 按esc键退出
print("esc break...")
break
if key == ord(' '):
# 按空格 保存一张图像 图片的路径就在下面的filename里面
num = num + 1
filename = "./img/frames_%s.jpg" % num
cv2.imwrite(filename, img)
capture.release()
cv2.destroyWindow("camera")
这里使用的是局域网ip地址,当wifi连接不同路由器时,这一个IP地址会变化,要调整代码中的ip地址。
再次强调,代码中的ip地址格式为:
http://:@<IP_ADDRESS>/
展示用手机摄像头进行图像分类
我用来了MobileNetv2,里面包含imagenet1000的分类,我们可以看到把我的皮卡丘识别为carton
每日一句
You only grow when you’re alone. 你只能在孤独中成长。— Paul Newman
以上是关于OpenCV 调用手机摄像头的主要内容,如果未能解决你的问题,请参考以下文章