OpenCV无线调用手机摄像头

所需环境

  • 一款可以开热点有摄像头的Android智能手机
  • 在手机上安装一款APP 叫IP摄像头,在小米商店就能找到(我的是荣耀的没找到,让同学帮忙下载分享的),其图标如下
    image
  • 在环境中导入OpenCV3

连接IP摄像头的步骤

  1. 手机打开热点用电脑连接
  2. 进入IP摄像头
    提醒一下这款APP里面的广告比较多,不要点错哦!
    点击箭头所指的“打开IP摄像头服务器”
    image
  3. 获取摄像头IP
    按照上一步操作完之后就进入到了下面的界面,被框住局域网IP需要记下来之后有用。

image

Python脚本

# coding=utf-8
import cv2
import time

if __name__ == '__main__':

    cv2.namedWindow("camera", 1)
    # 开启ip摄像头
    video = "http://admin:admin@192.168.43.1:8081/"  # 此处@后的ipv4 地址需要修改为自己的地址
    #!!!!划重点了!!!!这个地址就是上面记下来的局域网IP
    capture = cv2.VideoCapture(video)

    num = 0;
    while True:
        success, img = capture.read()

        # 不进行旋转
        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))
        # 若不关参数,参数也会被旋转,影响效果
        # cv2.imshow("camera", rotated)

        # 按键处理,注意,焦点应当在摄像头窗口,不是在终端命令行窗口
        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")

实现效果

image
image
image

说在最后

这样获取的视频是通过实时获取手机摄像头的图像然后打印出来的,也就是说这个图像的数据可以紧接着用来服务其他的算法。另外这个相机会在摄像头上有个参数,如果将画面翻转过来后参数也会被翻转,让我很困惑,去掉参数感觉怪怪的。如果有朋友找到好的办法解决可以和我交流哦!

原文地址:https://www.cnblogs.com/suanai/p/14901290.html