当前位置: 首页 > news >正文

RK3568平台(opencv篇)opencv处理图像视频

一.读取图像文件并展示

灰度图像:

灰度图需要用 8 位二进制来表示,取值范围是 0-255。用 0 表示 0(黑色), 用 255 表示 1(白色),取值越大表示该点越亮。

RGB 彩色图像:

 

RGB 图像就是一张像素由三个值来表示的图片,三个值分别表示红、绿、蓝三种 颜色的程度。如果一个像素的红色程度是 255,其它两个颜色程度是 0,那么这个像素在我们 看来就是红色的,通过这三种颜色的搭配,我们可以配出 4294967296 种不同的颜色。

代码实践:

demo01_imread.py

import cv2  # opencv的缩写为cv2,导入opencvimg1 = cv2.imread('lena.png', 0)  # flags参数为0,返回灰色图像
img2 = cv2.imread('lena.png', 1)  # flags参数为1,返回彩色图像
cv2.imshow('灰度图', img1)  # imshow函数现实处理结果
cv2.imshow('彩色图', img2)
cv2.waitKey(0)  # 等待下一次按键按下

cv2.imread()函数功能:读取图像文件。

 函数原型:cv2.imread(filename,flags=None)

参数定义: 第一个参数 filename,指要加载的图片路径。 第二个参数,为载入标识,指定一个加载图像的颜色类型,默认值为 1。

flags 取值: CV_LOAD_IMAGE_UNCHANGED——等价取值为-1,这个标识在新版本中已被废置。 CV_LOAD_IMAGE_GRAYSCALE——等价取值为 0,返回灰色图像。 CV_LOAD_IMAGE_COLOR——等价取值为 1,返回彩色图像。 CV_LOAD_IMAGE_ANYDEPTH——等价取值为 2,若图像深度是 16 位或者 32 位,就返回对 应深度,否则,返回 8 位图像如果输入有冲突的标志,将采用较小的数字值。

imread()函数载入图像并展示。

 二.写入图像文件信息

demo02_imwrite.py

import cv2  # opencv的缩写为cv2,导入opencvimg = cv2.imread('lena.png', 0)  # flags参数为0,返回灰色图像
cv2.imshow('灰度图', img)  # imshow函数现实处理结果
cv2.imwrite('lena_gray.png', img)  # imwrite写入读取到的图像并命名为lena_gray.png
cv2.waitKey(0)  # 等待下一次按键按下

cv2.imwrite()函数功能: 写入图像文件信息。

函数原型: cv2.imwrite(filename,img,params=None)

参数定义: img_path_name:保存的文件名 img:文件对象 params:特定格式下保存的参数编码,一般情况下为 None。

三.读取视频文件

demo03_VideoCapture.py

import cv2video_capture = cv2.VideoCapture("test.mp4")  # 使用VideoCapture函数读取名为test.mp4的视频文件
frame_num = video_capture.get(cv2.CAP_PROP_FRAME_COUNT)  # 使用video_capture.get函数获取总帧数
print("总帧数为 %f" % frame_num)
fps = video_capture.get(cv2.CAP_PROP_FPS)  # ==>使用video_capture.get函数获取帧率
print("帧率为 %f" % fps)
width = video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)  # ==>使用video_capture.get函数获取视频宽度
print("视频宽度为 %f" % width)
height = video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)  # ==>使用video_capture.get函数获取视频高度
print("视频高度为 %f" % height)

cv2.VideoCapture() 函数功能:初始化 VideoCapture 类并利用构造函数读入该视频的当前帧。

函数原型:cv2.VideoCapture(*args,**kwargs)

参数定义: 一般仅填入一个,即文件名。如果填入整数,则打开对应的捕获设备 ID。若为 0,则打 开默认摄像头。

VideoCapture.get 函数功能:返回该视频的 propld 所指定的属性。

函数原型:VideoCapture.get(self,propld)

参数定义: propld,为需要读取的视频属性参数位,一般以 cv2.CAP_PROP_ 开头,部分常用参数如 下表所示:

四.播放视频文件

demo04_videoplayback.py

import cv2  # opencv的缩写为cv2,导入opencvcap = cv2.VideoCapture(0)  # 使用VideoCapture函数读取名为test.mp4的视频文件
fps = cap.get(cv2.CAP_PROP_FPS)  # 使用video_capture.get函数获取帧率
while True:  # while循环,能持续播放读取到的视频ret, frame = cap.read()  # 使用read()函数读取图像的帧,一次循环读取一帧cv2.imshow("video", frame)  # 使用imshow()函数对读取到的帧进行显示if cv2.waitKey(int(1000 / fps)) & 0xFF == ord('q'):  # 设置视频播放完成和按下q键退出break
cap.release()  # 释放cap
cv2.destroyAllWindows()  # 关闭窗口,清除程序所占用的内存

python demo04_videoplayback.py 无法播放视频,待bug。。。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 雅思词汇及发音积累 2024.7.10
  • Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)
  • 5个在线地图瓦片URL分享
  • nginx的知识面试易考点
  • PTC可复位保险丝 vs 传统型保险丝:全面对比分析
  • 零信任网络安全
  • 怎样将aac转换mp3格式?推荐四个aac转MP3的方法
  • 传统剪纸遇上AI绘画:一场跨时代的艺术对话
  • 【库架一体立体库】与【传统立体库】对比
  • Perl中追踪文件脉动:文件系统事件通知机制全解析
  • k8s 使用 helm 文件部署 8.12.2 es 分角色集群
  • 如何在玩客云中安装小雅AList并实现使用手机平板远程连接听歌看电影
  • 属性描述符初探——Vue实现数据劫持的基础
  • LeetCode 205. 同构字符串
  • 【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!
  • [Vue CLI 3] 配置解析之 css.extract
  • 【翻译】babel对TC39装饰器草案的实现
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • jquery ajax学习笔记
  • mysql 5.6 原生Online DDL解析
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Travix是如何部署应用程序到Kubernetes上的
  • 初识 beanstalkd
  • 详解NodeJs流之一
  • 自制字幕遮挡器
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​浅谈 Linux 中的 core dump 分析方法
  • ###STL(标准模板库)
  • #QT项目实战(天气预报)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()参数及用法
  • (2)STM32单片机上位机
  • (42)STM32——LCD显示屏实验笔记
  • (7)STL算法之交换赋值
  • (k8s中)docker netty OOM问题记录
  • (第27天)Oracle 数据泵转换分区表
  • (汇总)os模块以及shutil模块对文件的操作
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)为C# Windows服务添加安装程序
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core跨平台微服务学习资源
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET IoC 容器(三)Autofac
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET程序员迈向卓越的必由之路
  • .NET开发者必备的11款免费工具
  • .NET企业级应用架构设计系列之应用服务器
  • @Transactional 参数详解
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——