OpenCV无线调用手机摄像头
所需环境
- 一款可以开热点有摄像头的Android智能手机
- 在手机上安装一款APP 叫IP摄像头,在小米商店就能找到(我的是荣耀的没找到,让同学帮忙下载分享的),其图标如下
- 在环境中导入OpenCV3
连接IP摄像头的步骤
- 手机打开热点用电脑连接
- 进入IP摄像头
提醒一下这款APP里面的广告比较多,不要点错哦!
点击箭头所指的“打开IP摄像头服务器”
- 获取摄像头IP
按照上一步操作完之后就进入到了下面的界面,被框住局域网IP需要记下来之后有用。
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")
实现效果
说在最后
这样获取的视频是通过实时获取手机摄像头的图像然后打印出来的,也就是说这个图像的数据可以紧接着用来服务其他的算法。另外这个相机会在摄像头上有个参数,如果将画面翻转过来后参数也会被翻转,让我很困惑,去掉参数感觉怪怪的。如果有朋友找到好的办法解决可以和我交流哦!