导航:首页 > 编程语言 > python摄像头监控

python摄像头监控

发布时间:2023-09-09 03:03:37

python 怎么打开电脑摄像头

此方案为朋友LSJ提出并实现的,转过来供学习用,由于在测试时没有架设WEB服务器,也没有做手机上的测试,仅通过PC测试了下,最完整解决方案请参考原出处《DIY手机监控系统》。

方法:

1 下载并安装VideoCapture、PIL。

2.编码,3s抓一个图片并保存

[python]view plain

㈡ Python简直无所不能!在电脑上如何调用手机摄像头教你轻松搞定

看到标题,卧槽!Python好牛批~

实际上它真的也牛批!

兄弟们用的台式电脑现在很少装摄像头的吧,笔记本就不要说话了!

虽然电脑没有摄像头,不过万一要是想跟女朋友电脑来个视频啥的,但是咱们不是还有手机吗 ,哈哈~

我们要做一件事,首先要知道目标是啥吧,那我们要干啥,在电脑上使用手机摄像头~

小明:那么问题来了,要怎么调用手机摄像头嘞?

经过我不断的尝试,最后让我找到一个非常厉害的软件,在局域网中可以自由调用手机摄像头捕捉到的信息,哎,这不就解决了~

小明:那怎么把捕捉到的镜头,实时的显示出来嘞?

这个都是小问题,Python那么多库,分分钟就能找到合适的,使用这个库,我们就可以让我们的图像显示出来了。

我们来实际操作一下

将摄像头apk安装在手机上并开始使用,验证一下显示情况.

1、将手机和电脑连接在同一个wifi下面。

2、启动app,可以看见app中有一个链接地址。

3、将这个局域网链接地址写入浏览器的地址中,然后运行起来。

账号:admin

密码:admin

然后就可以看见如下画面:

这其实是一段视频,看见这个的话,那就说明你成功了一半。

如何来处理这段视频呢?这时候就到我们编码了。

先安装一下要用的模块,对没错,就是这个神器~

pip install opencv-python

先到图一下库,你的窗口名字命名一下,@后面换成之前获取到的app局域网地址,最后面引入视频地址,video其实也可以换成你电脑中的视频地址可以制作成一个播放器。

这样就将视频引入进来了,你可以换一个视频地址,把它变成视频播放器,然后就需要去读取引入的视频地址。

既然实时的,而且要长时间运行,那当然少不了while true。

然后终于可以正常运行了,但无法退出,绝望~

虽然这是一个bug,但是在不同场景中他就不是bug,就比如你如果将这个软件发送给你的铁汁,让他一找不到关闭窗口的办法,只能重启电脑,让你高兴一阵,那这个就不是bug。不过他会把你怎么样我就不不知道了。

那怎么解决退出的问题,那不简单,给它加一个判断~

然后就退出了,虽然退出了,但是需要做后续处理。

然后电脑调用摄像头就圆满搞定!

㈢ python如何调用IP摄像头

正在用python+opencv做一个视频采集程序,在一个局域网中有多个ip摄像头和一个usb摄像头,如何知道调用的是哪个摄像头,检查该摄像状态,并且获得该摄像头的权限,也就是收到该摄像头的返回数据

㈣ 怎么在android下用python调用摄像头

1、下载相关软件包 下载地址:(code/p/android-scripting/downloads/list),我们需要下载如下几个文件: 并将这5个文件复制到 Android SDK目录下,(我这里复制到 /opt/android-sdk-linux/platform-tools , adb工具现在被放在platform-tools下,而不是原来的tools目录) 2、安装 .apk 程序 注意:在安装前,请你保持Android 虚拟器的运行状态。 到终端下,进入 platform-tools 目录运行命令: sudo ./adb install sl4a_r3.apk 安装不需要太多时间,很快完成,如果你看到“Success”,则表示你安装成功,否则请尝试重新安装。安同样方法,安装python_for_android_r1.apk。 3、安装Python 回到虚拟器,点击 图标,进入程序菜单界面。 4、import Android,即可调用各个类。

㈤ python如何能采集多个摄像头的数据

可以,用PYQT+CV2,四个USB连接成功,程序如下,UI要自己搞了,放不下
# -*- coding: utf-8 -*-
import sys#, time
from PyQt5 import QtWidgets
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
from Ui_cv2ui_thread import Ui_MainWindow
import cv2 as cv
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import (QApplication, QDialog, QFileDialog, QGridLayout,
QLabel, QPushButton, QColorDialog)
import numpy as np
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.setupUi(self) #这个一定要在这个最前面位置
# define the slot for pushbutton to save the merged image
self.pushButton.clicked.connect(self.savemergeimage)
self.img = np.ndarray(()) #空的numpy array
self.img1 = np.ndarray(())
self.img2= np.ndarray(())
self.img3= np.ndarray(())
self.img4= np.ndarray(())
self.img4= np.empty([960,1280, 3], int)
self.cap = cv.VideoCapture(3) #注意,由大开到小,很重要
self.cap.set(3, 640) # setup the resolution of CCD
self.cap.set(4, 480)
ret, self.img=self.cap.read()
self.cap1 = cv.VideoCapture(2)
self.cap1.set(3, 640)
self.cap1.set(4, 480)
ret, self.img1=self.cap1.read()
self.cap2 = cv.VideoCapture(1)
self.cap2.set(3, 640)
self.cap2.set(4, 480)
ret, self.img2=self.cap2.read()
self.cap3 = cv.VideoCapture(0)
self.cap3.set(3, 640)
self.cap3.set(4, 480)
ret, self.img3=self.cap3.read()
#time.sleep(1)也许需要延迟,等他准备好
# 初始化一个定时器,在其他条件下用的
#self.timer = QTimer(self)
# 实例化一个线程
self.work0= WorkThread()
self.work0.trigger.connect(self.ccd2)
# 定义时间任务是一次性任务就设定下一行
#self.timer.setSingleShot(True)
# 启动时间任务,注意一致性
self.work0.start()
# 实例化一个线程
self.work= WorkThread()
# 多线程的信号触发连接到ccd3
self.work.trigger.connect(self.ccd3)
self.work.start()
# 实例化一个线程
self.work2 = WorkThread()
# 多线程的信号触发连接到ccd4
self.work2.trigger.connect(self.ccd4)
self.work2.start()
# 实例化一个线程
self.work3 = WorkThread()
# 多线程的信号触发连接到ccd1
self.work3.trigger.connect(self.ccdmerge)
self.work3.start()
self.work4 = WorkThread()
# 多线程的信号触发连接到ccd1
self.work4.trigger.connect(self.ccd1)
self.work4.start()
def refreshShowa(self):#显示ccd1到label1
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img.shape
bytesPerLine = 3 * width
self.qImg = QImage(self.img.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label.setPixmap(QPixmap.fromImage(self.qImg))
def refreshShowb(self):#显示ccd2到label2
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img1.shape
bytesPerLine = 3 * width
self.qImg1 = QImage(self.img1.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_2.setPixmap(QPixmap.fromImage( self.qImg1))
def refreshShowc(self):#显示ccd3到label3
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img2.shape
bytesPerLine = 3 * width
self.qImg2 = QImage(self.img2.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_3.setPixmap(QPixmap.fromImage( self.qImg2))
def refreshShowd(self):#显示ccd4到label4
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img3.shape
bytesPerLine = 3 * width
self.qImg3 = QImage(self.img3.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_4.setPixmap(QPixmap.fromImage( self.qImg3))
def refreshShowe(self):#显示合并的影像到label6
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img4.shape
bytesPerLine = 3 * width
self.qImg4 = QImage(self.img4.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_6.setPixmap(QPixmap.fromImage( self.qImg4))
def ccd1(self):
self.cap.set(3, 640)
self.cap.set(4, 480)
ret, self.img = self.cap.read()
self.refreshShowa()
# 启动另一个线程
self.work0.start()#注意一致性
def ccd2(self, str):
self.cap1.set(3, 640)
self.cap1.set(4, 480)
ret, self.img1 = self.cap1.read()
self.refreshShowb()
self.work.start()#注意一致性
def ccd3(self, str):
self.cap2.set(3, 640)
self.cap2.set(4, 480)
ret, self.img2= self.cap2.read()
self.refreshShowc()
self.work2.start()#注意一致性
def ccd4(self, str):
self.cap3.set(3, 640)
self.cap3.set(4, 480)
ret, self.img3 = self.cap3.read()
self.refreshShowd()
self.work3.start()#注意一致性
def ccdmerge(self, str):
self.img4=np.hstack((self.img, self.img1))
self.img4=np.vstack((self.img4, np.hstack((self.img2, self.img3))))
#print ('here is a merge process') 可以用来判断多线程的执行
self.refreshShowe() #later to remove the remark
self.work4.start()#注意一致性
def savemergeimage(self):
# 调用存储文件dialog
fileName, tmp = QFileDialog.getSaveFileName(
self, 'Save Image', './__data', '*.png *.jpg *.bmp', '*.png')
if fileName == '':
return
if self.img.size == 1:
return
# 调用opencv写入图像
cv.imwrite(fileName,self.img4)
class WorkThread(QThread): #多线程核心,非常重要
# 定义一个信号
trigger = pyqtSignal(str)
def __int__(self):
# 初始化函数,默认
super(WorkThread, self).__init__()
def run(self):
self.trigger.emit('')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

㈥ python怎样通过opencv调用摄像头

Import cv2,cap = cv2.VideoCapture(0),ret,frame = cap.read(),cv2.imwrite("a.png",frame),调用摄像头并输出图像即可。

阅读全文

与python摄像头监控相关的资料

热点内容
压缩文件zip怎么解压不了 浏览:390
如何看苹果appstore软件是否收费 浏览:463
android发送字符串 浏览:13
python3最好的书籍推荐 浏览:684
蓝牙模块与单片机连接 浏览:665
mssql命令大全 浏览:193
mpv服务器怎么样 浏览:599
服务器迁移后怎么恢复 浏览:249
在vfp中如何显示和隐藏命令 浏览:283
如何部署地图服务器 浏览:737
安卓系统云闪付哪个app好用 浏览:111
程序员一天完成几个需求 浏览:960
请运行命令来卸载oracle 浏览:243
知识问答哪个app好 浏览:398
数控铣床编程代码大全 浏览:869
程序员相亲被骂 浏览:810
r6单片机 浏览:614
牛客编程题怎么评分 浏览:189
希沃白板怎么在安卓重置系统 浏览:845
python处理json过大 浏览:260