注:本篇文章介绍的全部都是在windows和ubuntu上面如何用python调用网络摄像头以及切换回插上网线联网
windows调用摄像头
不管我们在windows上面还是ubuntu上面调用网络摄像头都需要先知道它的ip地址,如果有不知道的小伙伴可以查看一下摄像头的说明书或者摄像头背面。
比如我的
192.168.1.108
这是我的初始ip,知道了ip之后,我们去打开控制面板
找到网络和internet
进入网络共享中心
点击我们插入的网线那一栏的以太网
点击属性
然后点击internet版本协议4
点击使用下面的ip地址,输入我们摄像头同一地址段的地址就好了。比如我的摄像头IP地址是更改过的192.168.254.5,那么我们这里就填同一个地址段就好了,简单来说就是前三个保持一样就行
之后就一路确定保存我们的更改就好了,然后我们出来后在浏览器中输入我们摄像头的ip地址,进入摄像头界面,如果你的摄像头登录需要密码就会跟我出现差不多的界面
输入密码进行登录,然后我们找到配置界面,以我的摄像头为例,找到设备配置——>网络服务——>RTSP
此时我们要记住这个端口号,调用的时候用的上!
此时我们新建文件,把代码粘贴上去,填好我们自己的参数并运行代码就可以了
import cv2
from ultralytics import YOLO
ip_address = '192.168.254.5' #这是我们摄像头的ip地址
port = 554 #这是我们刚刚查看的端口号
username = '' #这里输入你的用户名,如果你的摄像头打开需要登录的话
password = '' #这里输入登录密码
model = 'D:\\VScode_project\\v8_ocr_sort_diang\\ultralytics-main\\weights\\yolov8n.pt'
rtsp_url = f'rtsp://{username}:{password}@{ip_address}:{port}/live'
cap = cv2.VideoCapture(rtsp_url)
if not cap.isOpened():
print("无法连接到摄像头!")
exit()
while True:
ret, frame = cap.read()
frame = cv2.resize(frame, (0, 0), fx=0.5, fy=0.5)
cv2.imshow('Camera', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
这是效果图
windows断开网络恢复网络连接
在之后想用网线联网的时候就继续进Internet协议版本4中改成自动获得IP地址就好了
Ubuntu调用网络摄像头
好的,此时我们已经来到了ubuntu系统。我们还是先知道摄像头的ip地址,然后我们点击桌面右上角的网络那里
点击有线连接。点击有线设置
点击我们连接网线的小齿轮或上方加号,点击上方加号比较好一些,来回切换网络就可以了,比如你要用网了不用摄像头了,那么直接切换就好了。
然后我们点击IPv4,选择手动,输入我们的地址,子网掩玛,网关以及DNS,(往下滑就有DNS),这里没拍全
输入之后我们出来打开终端,输入
arp -a
这时候我们可以看到出现一些提示,这个时候我们可以看到这句
? (192.168.254.5) 位于 00:12:33:15:46:1b [ether] 在 enp7s0f1
这就说明我们可以调用这个网络摄像头了,注意: 00:12:33:15:46:1b这几个代表的是你的MAC地址,所以不用非跟我一样
接着我们继续运行之前的那段代码就可以看到画面了!效果如图:
ubuntu断开摄像头恢复网络
刚刚使用加号的同学直接切换网络就好,使用小齿轮的使用以下方法恢复网络。
我所知道的一共两种方法:
一:点击有线连接->有线设置
然后找到我们现在使用的网线,点击右上角的小齿轮,点击移除连接配置,然后等待几秒钟就好了
二:首先我们先回到IPv4中,(怎么进刚刚已经在上面连接网络摄像头时说过),删除DNS,然后点击自动(DHCP),点击应用。
然后我们进入终端输入下面这行命令停止Network Manager服务(Network Manager是管理网络连接的工具)
sudo service network-manager stop
接着我们输入下面这行命令删除Network Manager的状态文件
sudo rm /var/lib/NetworkManager/NetworkManager.state
然后继续输入下面这行命令启动Network Manager服务
sudo service network-manager start
基本就说这么多,如果有哪里说的不全,还请大佬们多指点