我试图连接我的手机摄像头使用IP网络摄像头应用程序,但我得到错误时,我运行的代码。
此外,URL也在不断变化。有没有什么方法可以让我不需要每次都更改URL?
这是我使用的代码:
import cv2
cap = cv2.VideoCapture("http://192.168.43.1:8080/shot.jpg")
while True:
ret, frame = cap.read()
cv2.imshow("IPWebcam", cv2.resize(frame, (600, 400)))
if cv2.waitKey(20) & 0xFF == ord('q'):
break
这是我在运行它时得到的错误消息:
Traceback (most recent call last):
File ".\phone_cam.py", line 15, in <module>
cv2.imshow("IPWebcam", cv2.resize(frame, (600, 400)))
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-9gpsewph\opencv\modules\imgproc\src\resize.cpp:3929: error:
(-215:Assertion failed) !ssize.empty() in function 'cv::resize'
发布于 2020-08-21 18:45:40
import cv2
import urllib.request
import numpy as np
URL = "http://192.168.43.1:8080/shot.jpg"
while(True):
img_arr = np.array(
bytearray(urllib.request.urlopen(URL).read()), dtype=np.uint8)
frame = cv2.imdecode(img_arr, -1)
# Display the image
cv2.imshow('IPWebcam', cv2.resize(frame, (1100, 800)))
if cv2.waitKey(20) & 0xFF == ord('q'):
break
cv2.release()
cv2.destroyAllWindows()
发布于 2020-08-19 13:04:47
这个答案不会直接解决问题,但它会让你发现问题的原因,这是读取视频、图像或摄像头时的一个很好的做法。始终检查ret
的值是否为True
,因为如果不是,则意味着读取数据时出现问题。
import cv2
cap = cv2.VideoCapture("http://192.168.43.1:8080/shot.jpg")
while True:
ret, frame = cap.read()
if ret:
cv2.imshow("IPWebcam", cv2.resize(frame, (600, 400)))
if cv2.waitKey(20) & 0xFF == ord('q'):
break
else:
print("cap.read() returned False")
如果代码在else语句中打印消息,这意味着链接有问题。检查是否正确,是否需要添加用户名和密码。
https://stackoverflow.com/questions/63479662
复制相似问题