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。。。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试题13(API请求方法)

在前端JavaScript中,进行API请求主要可以通过几种方式来实现,最常见的是使用XMLHttpRequest(较旧的方法)、fetch(现代浏览器推荐方法)以及使用第三方库如axios或jQuery.ajax等。 1. XMLHttpRequest 这是最…

昇思第10天

RNN实现情感分类 二分类问题:Positive和Negative两类 步骤: 1.加载IMDB数据集 2.加载预训练词向量:预训练词向量是对输入单词的数值化表示,通过nn.Embedding层,采用查表的方式,输入单词对应词表中的index,…

【算法专题】模拟算法题

模拟算法题往往不涉及复杂的数据结构或算法,而是侧重于对特定情景的代码实现,关键在于理解题目所描述的情境,并能够将其转化为代码逻辑。所以我们在处理这种类型的题目时,最好要现在演草纸上把情况理清楚,再动手编写代…

FreeRTOS——队列集

一、队列集 一个队列只允许任务间传递的消息为 同一种数据类型 ,如果需要在任务间 传递不同数据类型的消息 时,那么就可以使用队列集 作用:用于对多个队列或信号量进行“监听”(接收或获取),其中 不管哪一…

js 使用 lodash-es 检测某个值是否是函数

import { isFunction } from lodash-eslet isA isFunction(() > {}) console.log(isA) //true https://www.lodashjs.com/docs/lodash.isFunction#_isfunctionvalue https://lodash.com/docs/4.17.15#isFunction 人工智能学习网站 https://chat.xutongbao.top

JSP WEB开发(一) JSP语言基础

目录 JSP JSP简介: JSP页面 JSP运行原理 JSP脚本元素 JAVA程序片 局部变量 全局变量和方法的声明 全局变量 方法的声明 程序片执行特点 synchronized关键字 表达式 JSP指令标记 page指令 include指令 JSP动作标记 JSP动作元素include和include指令的…

AcWing 1550:完全二叉搜索树

【题目来源】https://www.acwing.com/problem/content/1552/【题目描述】二叉搜索树 (BST) 递归定义为具有以下属性的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 (2)若它的右…

大数据平台之数据同步

数据同步也成为CDC (Chanage Data Capture) 。Change Data Capture (CDC) 是一种用于跟踪和捕获数据库中数据变更的技术,它可以在数据发生变化时实时地将这些变更捕获并传递到下游系统。以下是一些常用的开源 CDC 方案: 1. Flink CDC Flink CDC 是基于 …

76 4G模组 境外拨号入网注意

1 引言 最近朋友把国内的设备拿到新加坡了,然后发现原本国内可以使用的设备无法在异国他乡联网,所以就叫我来看看,发现是附网返回状态、入网APN发生了改变导致的。另外,如果在境外使用国产4G模组拨号入网,也需要关注4G…

Windows安装超好用的截图工具——Snipaste

1、下载 官网:https://zh.snipaste.com/ 2、安装 (1)解压下载的压缩包 (2)选中Snipaste.exe文件,右键发送到 -- > 桌面快捷方式 (3)双击桌面Snipaste图标,桌面右下…

linux 服务器数据备份 和 mysql 数据迁移

查看域名ip 查看程序所处文件位置 list open files 1、 lsof -i :port 查看端口获取进程 pid 2、lsof -i pid 1、scp 下载服务器文件到本地 security copy protocol 2、导出服务器 mysql 数据库(表)到本地 mysqldump是MySQL自带的一个实用程序&…

云计算【第一阶段(24)】Linux文件系统与日志分析

一、文件与存储系统的inode与block 1.1、硬盘存储 最小存储单位:扇区(sector) 每个扇区大小:512字节 1.2、文件存取 最小存取单位:块(block)连续八个扇区组成:块(block) 每个块大小:4K文件数据:实际数据…

Java面试八股之如何提高MySQL的insert性能

如何提高MySQL的insert性能 提高MySQL的INSERT性能可以通过多种策略实现,以下是一些常见的优化技巧: 批量插入: 而不是逐条插入,可以使用单个INSERT语句插入多行数据。例如: INSERT INTO table_name (col1, col2) V…

Docker:一、安装与卸载、配置阿里云加速器(Ubuntu)

目录 🍁安装docker🌲1、环境准备🌲2、安装docker Engine🧊1、卸载旧版、任何冲突的包🧊2、使用存储库安装🧊3、安装 Docker 包。🧊4、查询是否安装成功🧊5、运行hello-world镜像&…

柯桥小语种学校成人生活口语学习|西班牙语中H为什么不发音…

01 H en el alfabeto espaol 西语字母表中的h 字母H是唯一一个在标准西班牙语中不再代表任何音素的字母。尽管在它单独出现时被叫做HACHE,但在大多数单词拼写中,它只是一个没有声音对应关系的字母,因此RAE称其为“无声的H”(hac…

机器学习——无监督学习(k-means算法)

1、K-Means聚类算法 K表示超参数个数,如分成几个类别,K值就取多少。若无需求,可使用网格搜索找到最佳的K。 步骤: 1、随机设置K个特征空间内的点作为初始聚类中心; 2、对于其他每个点计算到K个中心的距离,…

荞面打造的甜蜜魔法:甜甜圈

食家巷荞面甜甜圈是一款具有特色的美食。它以荞面为主要原料,相较于普通面粉,荞面具有更高的营养价值,富含膳食纤维、维生素和矿物质。荞面甜甜圈的口感可能会更加扎实和有嚼劲,同时带着荞面特有的谷物香气。在制作过程中&#xf…

SpringBoot+OSS实现文件上传

创建spring boot项目 pom依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency><dependency><groupId>javax.xml.bind</groupI…

SpringBoot项目练习

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 Spring项目1项目架构 SpringBootVue后台管理系统 学习视频&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

Pytorch(笔记7损失函数类型)

前言 损失函数&#xff08;Loss Function&#xff09;&#xff1a;是定义在单个样本上的&#xff0c;是指一个样本的误差&#xff0c;度量模型一次预测的好坏。 代价函数&#xff08;Cost Function&#xff09;成本函数经验风险&#xff1a;是定义在整个训练集上的&#xff0c…