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 调用手机摄像头的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 调用手机摄像头

opencv2 调用摄像头黑屏

opencv调用摄像头函数

python怎样通过opencv调用摄像头

求C++调用opencv设置获取摄像头图像大小的方法

【Python】Opencv调用摄像头问题