1. 图像视频的加载和显示

第一次的内容比较基础,因为本人也是初学OpenCV甚至Python的基础都不是怎么好(之前一直在学Java)。
当然首先需要准备好OpenCV的环境,这些一般B站讲OpenCV的视频里面都会介绍,我在此也就不多赘述。

1.1 创建窗口和显示窗口

常用API:
(函数基本为C++命名规范,驼峰结构)

  • cv2.namedWindow(winname[, flags]):创建命名窗口
  • cv2.imshow(winname,mat):显示窗口
  • cv2.destroyAllWindows():摧毁所有窗口
  • cv2.resizeWindow(winname, width, height):改变窗口大小
  • cv2.waitKey([, delay]):等待用户输入
#虽然OpenCV名字叫这个,但是初始时候叫做cv2,便一直沿用至今
import cv2#创建窗口,winname为你命名的窗口名称,中括号里面的表示可以不写,系统会给默认值
#这里说明两个选择:
#1.cv2.WINDOW_NORMAL :你可以改变你的窗口大小
#2.cv2.WINDOW_AUTOSIZE:系统自动地把窗口大小设置成你图片的大小
#不写就默认第二种
cv2.namedWindow('window')#更改窗口大小,注意想要更改窗口大小需要为第一种flag
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
cv2.resizeWindow('window', 800, 600)#展示名字为window的窗口
cv2.imshow('window', 0)#等待按键,括号内为等待时间,毫秒级,0表示任意键终止,会返回按键的ASCII值
#计算字母的ASCII值
#ord('q')
cv2.waitKey(0)#可以使用waitKey来销毁窗口
key = cv2.waitKey(0)
#& 0xFF非必要,完全可以不写,key是int型,最少是16位,而ASCII码是8位
if key & 0xFF == ord('q'):cv2.destroyAllWindows()

1.2 加载显示图片

  • cv2.imread(filename[, flags]):读取图片,默认读取彩色图片
    注意OpenCV读进来图片的颜色通道为BGR
  • flags常用以下三种:
  • cv2.IMREAD_COLOR:彩色图像,忽略alpha通道
  • cv2.IMREAD_GRAYSCALE:灰度图像
  • cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
import cv2
import matplotlib.pyplot as plt
import numpy as np#读取图片,绝对路径和相对路径都可以,flags后文再提
img = cv2.imread('./img.jpg')
#matplotlib显示图片,但我们会发现matplotilb显示的颜色和真实图片不一样,因为OpenCV读进来的图片数据的颜色通道不是默认的RGB,而是BGR(蓝绿红),所以一般用OpenCV自己的方式展示图片
plt.imshow(img)
cv2.imshow('img', img)

1.3 保存图片

  • cv2.imwrite(filename, img[, params])
import cv2#其实正常完全可以省去这两步,但是为了联系上面的只是还是写一下 吧
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 320, 240)img = cv2.imread('./img.jpg')#利用while循环优化退出逻辑
while True:cv2.imshow('img', img)key = cv2.waitKey(0)if(key & 0xFF == ord('q')):breakelif(key & 0xFF == ord('s'):#是可以对你想保存的图片进行重命名和改变图片格式cv2.imwrite("./img2.png", img)elif:print(key)
cv2.destrpyAllWindows()

1.4 视频采集

  • 视频是由图片组成的,视频的每一帧就是一幅图片,一般是30帧,表示一秒钟显示30张图片
  • cv2.VideoCapture():可以捕获摄像头,用数字表示不同的设备,比如0,1
  • 注意:这里的VideoCapture是类,所以首字母都大写了
  • 如果是视频文件,直接指定路径即可
#打开视频文件
vc = cv2.VideoCapture('./1.mp4')#打开摄像头,如果打开失败,不会报错,看起来是闪退
vc = cv2.VideoCapture(0)
  • 检查是否正确打开
if vc.isOpened():#读取视频的一帧,返回标记和这一帧数据,open为True表示读到了数据,为false表示没读到数据open, frame = vc.read()
else:open = False
  • 循环读取视频的每一帧数据
while True:#可以读到内容ret返回Trueret, frame = vc.read()if not ret:#没读到数据,直接退出break#显示数据cv2.imshow('video', frame)#假如一个视频是30帧,我们每张图间要间隔1000//30秒,注意必须是整数key = cv2.waitKey(1000//30)if key == ord('q'):break
#释放资源
vc.release()
cv2.destroyAllWindows()

1.5 视频录制

  • cv2.VIdeoWriter():参数一为输出文件,参数二为多媒体文件格式(VideoWriter_fourcc),参数三为帧率,参数四为分辨率
  • write:编码并写入缓存
  • release:缓存内容写入磁盘,并释放资源
cap = cv2.VideoCapture(0)
#*mp4v就是解包操作,等同于 'm', 'p', '4', 'v'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
#(640, 480)表示摄像头拍视频,这个大小不能错
#主要是这个分辨率vm = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))while cap.isOpened():ret, frame = cap.read()if not ret:breakvm.write(frame)cv2.imshow('frame', frame)if cv2.waitKey(10) == ord('q'):break
cap.release()#释放VideoWriter
vm.release()cv2.destroyAllWindows()

OK,第一部分内容先到此结束吧(一直盯着电脑屏幕实在太累了=.=)。

OpenCV初尝试1——图像视频的加载和显示相关推荐

  1. OpenCv初学者学习笔记(一):图像视频的加载与显示

    目录 一.图像视频的加载与显示 1.1创建和显示窗口 1.2加载显示图片 1.3保存图片 1.4视频采集 1.5视频录制 1.1创建和显示窗口 cv2.namedWindow() 创建命名窗口 cv2 ...

  2. OpenCV图像的加载、显示

    OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...

  3. OpenCV:01图片视频的加载显示

    文章目录 **学习目标:** 图像与视频的加载显示 导入OpenCV的包`cv2` 窗口操作 计算按键的`ASCII`值 读取图片 用其他插件来读取(以`matplotlib`为例) 用`OpenCV ...

  4. OpenCV 图像加载和显示

    OpenCV 图像加载和显示 OpenCV 图像加载和显示 加载图像(使用cv :: imread) 创建一个名为OpenCV的窗口(使用cv :: namedWindow) 在OpenCV窗口中显示 ...

  5. 【C++的OpenCV】第三课-OpenCV图像加载和显示

    我们开始学习OpenCV 一.OpenCV加载图片和显示图片 1.1 imread()函数的介绍 1.2 cv::namedWindow()函数的介绍 1.4 imshow()函数介绍 1.5 Mat ...

  6. Python机器视觉--OpenCV入门--OpencCV的安装与图片加载显示

    1. 安装OpenCV 执行pip install opencv-python==3.4.1.15, 3.4.2之后有些算法申请了专利,用不了了.(使用其他版本也可以) 安装opencv扩展包(选装) ...

  7. OpenCV——图片的加载、显示、保存(python)

    本小节,我们将学习在Python语言中利用OpenCV库来实现图片的读取.显示.保存,所有的这些图片都是一个numpy.ndarray,这三种操作都过cv2.imread().cv2.imshow() ...

  8. Coursera的视频一直加载无法播放问题的完整解决【win10】

    Coursera的视频一直加载无法播放问题的完整解决[win10] 问题来源:注册了coursera,准备原汁原味地学练吴恩达老师的机器学习和深度学习教程,自加入课程起会有日程安排,太懒了,拖到人家连 ...

  9. 6-6 快速播放音频和视频预加载

    更快的播放开始意味着更多的人观看您的视频或收听您的音频.这是众所周知的事实.在本文中,我将探讨可用于通过根据您的用例主动预加载资源来加速音频和视频播放的技术. 我将描述预加载媒体文件的三种方法,从它们 ...

最新文章

  1. 人脸识别技术法律缺口亟待补上
  2. Java 8仍然需要LINQ吗? 还是比LINQ更好?
  3. 大数据学习(5)-- NoSQL数据库
  4. java高级语言特性,Java高级语言特性之注解
  5. arm9260 linux编译,关于linux9260烧写软件和gdb调试器的使用
  6. linux系统恢复上一次,如何将您的Ubuntu Linux系统恢复到其上一个状态
  7. 集群类型以及提高服务器性能的技术概述
  8. 【C++实现】HeadFirst策略模式设计模式
  9. 超级好用的5款办公软件,极具办事效率
  10. PCB的作用及其包含的信息
  11. 2020,网络安全领域有什么新趋势
  12. PHP学习总结(二)
  13. RDLC报表中使用自定义函数
  14. 修复pd16虚拟机在big sur 的usb无法使用和无法联网问题!
  15. 学前端的你了解这些知识吗?——BFC、IFC、GFC、FFC
  16. 负数在计算机中的存储方式
  17. c++编写手机小游戏代码_C++代码实现贪吃蛇小游戏
  18. c#实现邮件发送功能
  19. 【北邮国院大三下】Cybersecurity Law 网络安全法 Week1【更新Topic4, 5】
  20. python实现tea/xtea/xxtea加密算法

热门文章

  1. mysql条件查询出现or连接时会使用索引的场景
  2. 深度强化学习制作森林冰火人游戏AI(四)获取窗口部分界面
  3. 【机器学习】拉格朗日对偶性
  4. logo设计图案创意有哪些?分享一些logo设计妙招
  5. 如何有效运用测评自养号来提升阿里国际店铺权重
  6. 常用的svn和git命令
  7. Git与SVN的区别Git常用命令
  8. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.的解决方法
  9. windows环境安装seata
  10. 肇事者为穿黄色上衣者