VideoCapture

python 调用麦克风;摄像头;截屏;

点点圈 提交于 2021-02-12 22:37:16
# -*- coding: utf-8 -*- """ Created on Mon Jun 24 14:47:35 2019 @author: erio """ from PIL import Image,ImageGrab import cv2 import pyaudio import wave ''' #录音 input_filename = "record.wav" # 麦克风采集的语音输入 input_filepath = "E:" # 输入文件的path in_pathrec = input_filepath + input_filename #通俗解释就是wav文件路径 def get_audio(filepath): CHUNK = 256 #定义数据流块 FORMAT = pyaudio.paInt16 #量化位数(音量级划分) CHANNELS = 1 # 声道数;声道数:可以是单声道或者是双声道 RATE = 8000 # 采样率;采样率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz RECORD_SECONDS = 10 #录音秒数 WAVE_OUTPUT_FILENAME = filepath #wav文件路径 p = pyaudio.PyAudio()

教你如何利用python调用摄像头

痴心易碎 提交于 2021-02-11 21:27:05
这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一、打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像 frame = cv2.flip(frame, 1)#摄像头是和人对立的,将图像左右调换回来正常显示。 cv2.imshow("video", frame) c = cv2.waitKey(50) if c == 27: break video_demo() cv2.destroyAllWindows() 二、打开摄像头并截图 import cv2 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头 while (1): # get a frame ret, frame = cap.read() frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示 # show a frame cv2.imshow(

14、USB摄像头(V4L2接口)的图片采集

99封情书 提交于 2021-02-10 11:40:42
参考网站http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html 一、一些知识 1、V4L和V4L2。 V4L是Linux环境下开发视频采集设备驱动程序的一套规范(API),它为驱动程序的编写提供统一的接口,并将所有的视频采集设备的驱动程序都纳入其的管理之中。V4L不仅给驱动程序编写者带来极大的方便,同时也方便了应用程序的编写和移植。V4L2是V4L的升级版,由于我们使用的OOB是3.3的内核,不再支持V4L,因而编程不再考虑V4L的api和参数定义。 2、YUYV与RGB24 RGB是一种颜色的表示法,计算机中一般采用24位来存储,每个颜色占8位。YUV也是一种颜色空间,为什么要出现YUV,主要有两个原因,一个是为了让彩色信号兼容黑白电视机,另外一个原因是为了减少传输的带宽。YUV中,Y表示亮度,U和V表示色度,总之它是将RGB信号进行了一种处理,根据人对亮度更敏感些,增加亮度的信号,减少颜色的信号,以这样“欺骗”人的眼睛的手段来节省空间。YUV到RGB颜色空间转换关系是: R = Y + 1.042*(V-128); G = Y - 0.34414*(U-128) - 0.71414*(V-128); B = Y + 1.772*(U-128); YUV的格式也很多,不过常见的就是422

opencv 机器视觉 学习笔记

混江龙づ霸主 提交于 2021-02-03 08:01:43
import numpy as np import cv2,os # img = numpy.zeros((3,3),dtype=numpy.uint8) # print(img) # print(img.shape) # img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) # print("=============",img) #修改图片格式 # img = cv2.imread("1123.jpg") # cv2.imwrite("1123.png",img) # # grayimg = cv2.imread('1123.png',cv2.IMREAD_GRAYSCALE) # cv2.imwrite("11231.png",grayimg) # # print(grayimg[0,0]) # print(grayimg.item((0,0))) # #grayimg.setitem((0,0),108) # #grayimg[0,0] =128 # # byteimage = bytearray(grayimg) # print(byteimage) #将含有随机字节的bytearray转换为灰度图像和BGR图像 # randombytearray = bytearray(os.urandom(120000)) #

环信easeui集成:坑总结2018(二)

匆匆过客 提交于 2021-01-05 08:40:50
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改。 该篇文章将解决的问题: 1、如何发送视频功能 2、未完待续。。 -------------------------------------------------------------------------------------------------------------------- 一、如何发送视频 1、环信easeui 会话功能默认支持图片,拍照,位置 三个功能   想支持播放视频需要自己添加。   官方提供发送视频方法:    主要修改在EaseChatFragment.java文件中   ①、首先找到 很明显,这就是会话界面扩展功能,分别用于item 名称,图片,点击事件id,默认有拍照,相册,位置,这里屏蔽位置功能,添加视频功能 修改如下: // 屏蔽位置消息 , 添加视频消息 protected int [] itemStrings = { R. string .attach_take_pic, R. string .attach_picture ,R. string .attach_video}; protected int [] itemdrawables = { R.drawable.ease_chat_takepic_selector, R

OpenCV视频的读写

霸气de小男生 提交于 2020-12-17 11:31:33
实验室的项目是处理视频,所以就从视频的读取和写入开始吧! 常用的接口有C++和Python,Python肯定要简洁许多,不过因为项目需要,还是用C++了(PS:其实是我被Python的速度惊到了...) cv::VideoCapture类 这个对象就是读入视频的了,完整的操作有很多,这里只提及最普遍的用法。具体可见: https://docs.opencv.org/3.1.0/d8/dfe/classcv_1_1VideoCapture.html 1、对象的构造函数,如下面的例子: cv::VideoCapture capture( " D:\\Camera Road 01.avi " ); 参数为const string&,即读入彩色图像,若设置为0则读取摄像头。 2、验证视频读入是否成功,如下: if (! capture.isOpened()) { std::cout << " Vidoe open failed! " << std::endl; return - 1 ; } 3、验证完成后,就可以开始读取视频啦! cv::Mat frame; capture >> frame; VideoCapture对象的操作可以像流一样读入到Mat类型的对象(即图像)中。 cv::VideoWriter类 这个类是用来写入一个视频的,使用起来比capture麻烦一些。 构造函数 cv:

基于opencv,开发摄像头播放程序

大兔子大兔子 提交于 2020-12-16 23:48:18
前言 Windows下实现摄像视频捕捉有多种实现方式;各种方式的优劣,本文不做对比。但是,opencv是一款老牌开发库,在图像处理领域声名显赫。采用opencv来处理摄像视频,在性能和稳定性上,是有保障的。并且,opencv包含很多图像处理函数,可以更方便的对视频处理。   执行程序是用wpf开发的,所以先将opencv封装成c语言接口,以供调用。opencv也不可能提供现成的控件供wpf使用,两种不同的开发语言“沟通”起来有些困难。其实稍作变通,就可以实现摄像头播放功能。 1 对opencv封装 opencv的类VideoCapture封装了对摄像头的操作,使用起来也非常简单。 bool open(int device); device为摄像头设备序号。 如果有多个摄像头,怎么知道哪个摄像头的序号那?可以通过如下函数,获取摄像头列表。摄像头在list中索引即为设备序号。 int GetCameraDevices(vector<wstring>& list) { ICreateDevEnum *pDevEnum = NULL; IEnumMoniker *pEnum = NULL; int deviceCounter = 0 ; CoInitialize(NULL); HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum,

2.1 摄像头V4L2驱动框架分析

点点圈 提交于 2020-12-07 05:43:01
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤; 一、V4L2架构 1. 字符类驱动 V4L2(V4L2:vidio for linux version 2)摄像头驱动属于字符类驱动, 对于 一般的字符类驱动程序 ,其编写步骤一般分为: 1)构造一个file_operations: 编写open=drv_open .read=drv_read 2)注册设备,告诉内核:register_chrdev(主设备号,名字,&file_operations) 3)入口函数:调用register_chrdev 4)出口函数:卸载 对于 复杂的字符类驱动程序 ,其程序是一种分层结构。例如LCD驱动程序。如下图所示。 --> 上层为核心层 (内核已经做好的),在fbmem.c中 ,主要的作用为: 1)构造file_operations(open read write 函数);2)注册;3)入口、出口。 --> 硬件相关层 (用户需要做的),供核心层的file_operations调用,主要完成: 1) 分配一个fb_info 结构体;2) 设置fb_info 结构体等;3) 注册;4) 硬件相关的操作。 2. V4L2驱动架构 由以上字符类设备驱动架构可知

android视频录制MediaStore.ACTION_VIDEO_CAPTURE

China☆狼群 提交于 2020-12-05 06:56:09
调用系统组件 申请权限AndroidManifest.xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions"></uses-permission> <uses-permission android:name="android.permission.CAMERA"/> SystemVedioActivity.java package com.example.a20200712; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android

树莓派安装OpenCV完整过程

穿精又带淫゛_ 提交于 2020-11-25 07:56:57
1. 配置并更新树莓派系统 sudo raspi-config // 进入后 打开摄像头 、SSH sudo apt - get update sudo apt - get upgrade sudo rpi -update 2. 安装OpenCV的相关工具 sudo apt-get install build-essential cmake git pkg-config 3. 安装OpenCV的图像工具包 sudo apt-get install libjpeg8- dev sudo apt -get install libtiff5- dev sudo apt -get install libjasper- dev sudo apt -get install libpng12-dev 4. 安装视频I/O包 sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 5.安装gtk2.0和优化函数包 sudo apt-get install libgtk2.0- dev sudo apt -get install libatlas-base-dev gfortran 6. 下载OpenCV源码 git clone https://github.com/opencv/opencv.git