学习了从网络摄像头或已有的视频文件载入视频。
两种途径一样的地方在于:
1、先导入cv2库
2、定义捕捉对象。
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow("frame", frame)
key = cv2.waitKey(1)
if key == 27:
break
cap.release()
cv2.destroyAllWindows()
code:cap = cv2.VideoCapture(0)
这个函数的功能是从摄像头中载入视频帧,括号里面的0代表是来自第一个网络摄像头,如果是来自第二个的话,把0变成1,以此类推。
这里使用while循环,ret, frame = cap.read(),如果cap读入一个帧,那么ret的值是True,否则是false,结束循环。
imshow的使用就和笔记一的图片一样。
key = cv2.waitKey(1)
if key == 27:
break
上面的代码是判断键入的键是什么,27对应的是Ese,如果键入Ese的话,就跳出循环,结束执行。
import cv2
cap = cv2.VideoCapture("red_panda_snow.mp4")
while True:
ret, frame = cap.read()
cv2.imshow("frame", frame)
key = cv2.waitKey(25)
if key == 27:
break
cap.release()
cv2.destroyAllWindows()
同样,这里也使用cv2.VideoCapture()功能函数,只是括号里面的内容和前面从网络摄像头载入不一样了。
如果,视频文件就在python脚本的同一文件夹中,()里面只需要填写视频的文件名。
比如,上面所展示的那样:cap = cv2.VideoCapture("red_panda_snow.mp4")
如果,视频文件在电脑桌面或其他地方(和笔记一中图片是一个道理),那么()里填写路径和视频的文件名。
比如,cap = cv2.VideoCapture(r"C:\Users\MYUSER\Documents\red_panda_snow.mp4")
值得注意的是,这个前面最好加上r,因为有时候python会把里面的 \字母 认为是转义字符。
就像这样,会出现橙色的玩意

但如果加上r,就好了,变成赏心悦目的绿色了

运行代码,就开始播放视频(按Ese才可以关掉,右上角的叉叉不可以)

import cv2
cap = cv2.VideoCapture("red_panda_snow.mp4")
fourcc = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter("flipped_red_panda.avi", fourcc, 25, (640, 360))
while True:
ret, frame = cap.read()
frame2 = cv2.flip(frame, 1)
cv2.imshow("frame2", frame2)
cv2.imshow("frame", frame)
out.write(frame2)
key = cv2.waitKey(25)
if key == 27:
break
out.release()
cap.release()
cv2.destroyAllWindows()
在之前从文件中载入视频的基础上增加了一些代码,达到将视频水平翻转并保存的效果。
code:fourcc = cv2.VideoWriter_fourcc(*"XVID")
fourcc是Four-Character Codes(四字符代码),因而括号里需要填入四个字符。
一般写作cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi。
上面的例子中,使用python中*操作符的用法(*用于参数前面,表示传入的参数将按照元组的形式存储),达到相同效果。
code:out = cv2.VideoWriter("flipped_red_panda.avi", fourcc, 25, (640, 360))
cv2.VideoWriter()
第一个参数"flipped_red_panda.avi"是要保存的文件名。第二个参数fourcc是指定编码器。都三个参数25是要保存的视频的帧率。第四个参数(640, 360)要保存的文件的画面尺寸。
code:frame2 = cv2.flip(frame, 1)
cv2.flip(filename, flipcode)
filename:需要操作的图像。flipcode:翻转方式 1为水平翻转。
最后将原视频所有的帧水平翻转后,写入out。
效果如下:


原文链接:Loading Video and Webcam - OpenCV 3.4 with python 3 Tutorial 2 - Pysource
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT