kivy调用摄像头(未完)
我的kivy小程序
- 安装
- 实验一
- 界面
- 摄像头驱动
- 主程序
- 实验二
- 实验三
- 实验四
安装
更新pip 工具为最新版,因为在国内这里使用了清华源
python -m pip install --upgrade pip wheel setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
安装基本依赖
i
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew -i https://pypi.tuna.tsinghua.edu.cn/simple
安装kivy
python -m pip install kivy -i https://pypi.tuna.tsinghua.edu.cn/simple -i https://pypi.tuna.tsinghua.edu.cn/simple
做一个小程序测试是否ok
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):def build(self):return Button(text='Hello World')
TestApp().run()
如果弹出对话框和按钮代表安装ok了
实验一
我做一个调试双目摄像头的小程序,内容很简单
1、在界面中两个图框能够同时实时显示L和R两个摄像头的画面
2、一个按键能够捕获两个摄像头当前帧图片并分别起名为test_lX,test_rX(X为顺序数字)保存在image文件夹中
3、能将每次捕获的图片显示在当前程序中
程序已打包成.exe 在我的下载中
界面
kivy中可以把界面和主程序写在一个py文件中也可以单独写一个ky文件,我们只有一个界面也就只用了一个kv文件
#:import Factory kivy.factory.FactoryMainScreen:
<MainScreen>:BoxLayout:canvas.before:Color:rgba: 255,240,245, 0GridLayout:rows:2BoxLayout:KivyCamera:id:cv2cam_lBoxLayout:KivyCamera:id:cv2cam_rBoxLayout:rows:3orientation: 'vertical'BoxLayout:Image:id:image_ltext: 'left'Image:id:image_rtext: 'right'BoxLayout:Button:id:button2BoxLayout:Button:id:button1text: 'CAPTURE'<MyPopup@Popup>:title: 'Test'size_hint: None, Nonesize: 400, 400
界面是这样滴
摄像头驱动
class KivyCamera(Image):def __init__(self, **kwargs):super(KivyCamera, self).__init__(**kwargs)self.capture = Noneself.clock_event = Nonedef start(self, capture, fps=30):self.capture = captureself.clock_event = Clock.schedule_interval(self.update, 1.0 / fps)def stop(self):Clock.unschedule(self.clock_event)if self.capture != None:self.capture.release()def update(self, dt):ret, frame = self.capture.read()if ret:# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 彩色转灰度# convert it to texturebuf1 = cv2.flip(frame, 0)buf = buf1.tostring()texture1 = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')texture1.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')self.texture = texture1
主程序
class MainScreen(BoxLayout):num = 0def dostart(self,*largs):self.capturel = cv2.VideoCapture(1)self.capturer = cv2.VideoCapture(2)self.ids.cv2cam_l.start(self.capturel)self.ids.cv2cam_r.start(self.capturer)self.ids.button1.bind(on_release=self.release)self.ids.button2.bind(on_release=self.press)def press(self,instance):self.ids.image_l.source = ''self.ids.image_r.source = ''def release(self,instance):img_l = self.ids.cv2cam_l.frameimg_r = self.ids.cv2cam_r.framecname_l = 'img/test_l'+str(self.num)+'.png'cname_r = 'img/test_r' + str(self.num) + '.png'cv2.imwrite(cname_l,img_l)cv2.imwrite(cname_r,img_r)self.ids.image_l.source = cname_lself.ids.image_r.source = cname_rself.num += 1
完成后是这样滴
实验二
使用opencv进行双目摄像头的标定
实验三
生成距离点云图
实验四
对特定物体进行检测,检测其长、宽、高并计算体积
kivy调用摄像头(未完)相关推荐
- Android调用摄像头--农民伯伯原文
Android开发指南(33) -- Multimedia and Camera - Camera 前言 本章内容为Android开发者指南的 Framework Topics/Multimedia ...
- ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
Contents 环境下载.编译 1 OpenCV-4.5.4下载.配置 2 CMake下载安装.配置 3 下载.编译protobuf-3.4.0 4 下载.编译ncnn VS2017新建项目--编译 ...
- mui教程2——窗口管理、调用相册、调用摄像头、调用重力感应、微信朋友圈界面(仿制)分析
一.窗口管理 1,页面初始化 在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady()方法,涉及到HTML5 ...
- web/html5调用摄像头实现二维码扫描效果(代码实例)
本文给大家介绍如何用web/html5调用摄像头实现二维码扫描的效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 利用html5(navigator.getUserMedia)调 ...
- 前端使用navigator.mediaDevices.getUserMedia和window.MediaRecorder实现调用摄像头录制视屏
前端使用navigator.mediaDevices.getUserMedia和window.MediaRecorder实现调用摄像头录制视屏 一.navigator.mediaDevices.get ...
- 创建型模式——Factory Method(未完)
当对某个对象的实例化代码散布在整个项目中的时候,似乎你已经可以嗅到坏味道了,我们叫做"创建蔓延".除非你肯定这个对象的实例化方法永远不会改变,否则最后将"创建的知识搬迁到 ...
- javascript有用小功能总结(未完待续)
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
- python调用摄像头人脸识别代码_利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别...
用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考: 使用opencv 调用摄像头 import face_recognition import cv2 ...
最新文章
- 创建支持ssh的docker镜像
- nacos 配置动态刷新_Nacos 动态刷新@RefreshScope 【实现配置和实例刷新】
- 关于Crypto.PublicKey.RSA,在generate后无法被赋值问题
- P1377 [TJOI2011]树的序 笛卡尔树优化建树
- Python GIL
- 168输出为861java_AcWing 861. 二分图的最大匹配-java-关键处注释
- python爬虫的时候要用的url修改方法总结
- Dubbo-Admin 2.7 本地安装和部署
- Linux系统负载查询
- [2018.03.14 T2] 树(tree)
- labview rtm_下载Vista RTM
- 【8】同步vscode配置和插件【导入导出】、再也不用担心换电脑重新安装插件了
- 小工具 | 横断面面积及土方量计算excel表格
- 树莓派安装opencv3.4.3时缺少boostdesc等文件及一些常见的报错
- 2020云栖大会-达摩院
- lisp钢管_图纸管道材料代号说明
- 电力电子中的宽禁带器件
- angularjs与jquery特效slidetoggle结合
- 2022/1/23(每周总结)
- whistle工具常用功能
热门文章
- codeforces-1131D Gourmet choice(拓扑排序)
- ArcGIS:如何利用模型构建器(ModelBuilder)解决基于人口和已有商业点的商业连锁店选址问题?
- 我国疫苗监管体系通过世卫组织新一轮评估
- 营销方式该怎么去定位
- Java基础 - 内部类03 - 匿名内部类详解
- java sleep异常_sleep方法要求处理中断异常:InterruptedException
- wireshark教程
- 2022双十一激光投影仪哪个好?当贝激光投影系列 高品质大品牌更有保障
- html边框上的小箭头,css简单实现带箭头的边框
- sysinfo(系统调用)