首页 > 解决方案 > 使用 ipwebcam 的视频捕获代码在 google colab 中不起作用

问题描述

我正在使用 ipwebcam 将我的手机摄像头用作网络摄像头,并且代码在 python IDE 上运行良好,但相同的代码在 Google colab 中不起作用。ipwebcam 在指定的 url 中从我的手机摄像头提供换行。

这是代码:

import requests
import cv2
import numpy as np
url="https://192.164.45.1342:8080/shot.jpg"
while True:
  img_resp=requests.get(url)
  img_arr=np.array(bytearray(img_resp.content), dtype=np.uint8)
  img=cv2.imdecode(img_arr,-1)
  cv2.imshow("image",img)
  if cv2.waitKey(1)==27:
      break

此代码用于从上面提到的 url 中逐帧获取,这是我手机上的实时提要,并将其显示为视频。在谷歌 colab 我没有得到任何输出

这是错误:

TimeoutError: [Errno 110] 连接超时

在处理上述异常的过程中,又出现了一个异常:

NewConnectionError Traceback(最近一次调用最后一次)

NewConnectionError: : 无法建立新连接:[Errno 110] 连接超时

在处理上述异常的过程中,又出现了一个异常:

MaxRetryError Traceback(最近一次调用最后一次)

MaxRetryError: HTTPSConnectionPool(host='192.168.43.149', port=8080): url: /shot.jpg 超过最大重试次数(由 NewConnectionError(': 无法建立新连接: [Errno 110] Connection timed out', ))

在处理上述异常的过程中,又出现了一个异常:

ConnectionError Traceback(最近一次调用最后一次)

/usr/local/lib/python3.6/dist-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 514 raise SSLError(e, request=request) 515 -- > 516 raise ConnectionError(e, request=request) 517 518 除了 ClosedPoolError 作为 e:

ConnectionError: HTTPSConnectionPool(host='192.168.43.149', port=8080): Max retries exceeded with url: /shot.jpg (由 NewConnectionError(': 无法建立新连接: [Errno 110] Connection timed out', ))

标签: google-colaboratory

解决方案


Colab 代码在未连接到本地网络的后端上执行。因此,192.164.45.1342无法从 Colab 后端访问该地址。

一个潜在的解决方法是使用本地 Jupyter 运行时。或者,您可以将图像保存在本地,然后将它们传输到 Colab。


推荐阅读