OpenCV3图像处理笔记

news2024/12/24 11:37:54

此笔记针对 Python 版本的 opencv3,c++ 版本的函数和 python 版本的函数参数几乎一样,只是矩阵格式从 ndarray 类型变成适合 c++ 的 mat 模板类型。注意,因为 python 版本的opncv只提供接口没有实现,故函数原型还是来自 c++版本的opencv,但是参数解释中的数据类型还是和 python 保持一致。

图像的载入:imread() 函数

函数原型:

Mat imread(const sting& filename, int flags=None)

参数解释:

  • filename:图像的文件路径,sting 字符串类型
  • flags:载入标识,以何种方式读取图片,int 类型的 flags。常用取值解释如下:
    • flags = 0:始终将图像转成灰度图再返回
    • flags = 1:始终将图像转换成彩色图再返回,如果读取的是灰度图,则其返回的矩阵 shape 将变为 (height, width, 3)
    • flags = 2:如果载入的图像深度为 16 位或者 32 位,就返回对应深度的图像,否则,就转换为 8 位图像再返回。

**总结:**读取文件中的图片到 OpenCV 中,返回 Mat 或者 ndarray 类型的矩阵,以彩色模式载入图像时,解码后的图像会默认以 BGR 的通道顺序进行存储。

cv2.imread()函数:

python-opencv 库的 imread 函数的 flags 参数取值方式与 C++ 版有所区别。使用函数 cv2.imread() 读入图像,图像要么在此程序的工作路径,要么函数参数指定了完整路径,第二个参数是要告诉函数应该如何读取这幅图片,取值如下:

  • cv2.IMREAD_COLOR : 取值 1,读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
  • cv2.IMREAD_GRAYSCALE : 取值 0,以灰度模式读入图像。
  • cv2.IMREAD_UNCHANGED : 取值 -1,读入一幅图像,并且包括图像的 alpha 通道。

Instead of these three flags, you can simply pass integers 1, 0 or -1 respectively.

import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

opencv-python 库的读取图像函数 cv2.imread() 官方定义如下图。

opencv-python库的读取图像函数官方定义

图像的显示:imshow()函数

函数原型:

void imshow(const string &winname, InputArray mat)

参数解释:

  • winname:需要显示的窗口标识名称,string 字符串类型
  • mat:需要显示的图像矩阵,ndarray numpy 矩阵类型

总结:imshow 函数用于在指定的窗口显示图像,窗口会自动调整为图像大小。

minMaxLoc 函数

函数 cv :: minMaxLoc 查找最小和最大元素值及其位置,返回的位置坐标是先列号,后行号(列号,行号) 。在整个数组中搜索极值,或者如果mask不是空数组,则在指定的数组区域中搜索极值。(只适合单通道矩阵)。函数原型:

CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
                            CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
                            CV_OUT Point* maxLoc = 0, InputArray mask = noArray());

函数参数解释:

  • src:input single-channel array.
  • minVal:pointer to the returned minimum value; NULL is used if not required.
  • maxVal:pointer to the returned maximum value; NULL is used if not required.
  • minLoc:pointer to the returned minimum location (in 2D case); NULL is used if not required.
  • maxLoc:pointer to the returned maximum location (in 2D case); NULL is used if not required.

位深度的概念

  • 灰度图的位深度是 16,则其矩阵的元素类型为 uint16 ,彩色图其位深度一般是 24 ,红色占 8 个位、蓝色占 8 个位、绿色占 8 个位,其矩阵的元素类型为 uint8
  • 位分辨率( Bit Resolution )又称色彩深度、色深或位深度,在位图图像或视频视频缓冲区,指一个像素中,每个颜色分量(Red、Green、Blue、Alpha 通道)的比特数。
  • matplotlib.image.imsave 将灰度图的矩阵保存为图像格式时,其默认保存的图像通道数为 4RGBA,其中 RGB 三个通道对应的二维矩阵数值完全一样。

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

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

相关文章

PlanarSLAM:基于结构化约束的视觉SLAM

1. 摘要 在我们所熟知经典SLAM系统,以ORB-SLAM为代表的通过特征点法在相机位姿估计方面有很好的表现,但在一些人为构造的弱纹理环境下,由于缺少可靠的特征点的缘故,导致表现性能下降。 针对此种问题,作者通过根据周围…

介绍两个LVGL开发工具,让你做出更好的UI

环境 V公众号南山府嵌入式回复4001获取 NXP GUI-Guider 介绍的第一个就是恩智浦官方提供的,现在已经更新到1.4.1版本,相对前面的版本,变化还是挺大的,无论是界面设计还是其他的做的都挺不错的。而且特别好的一点是,支…

深度学习之初识篇——小白也能跑通的深度学习万能框架【重点】

目录深度学习环境配置点击下载深度学习环境数据集准备使用自己标注的数据集使用标注软件数据准备VOC标签格式转yolo格式并划分训练集和测试集部署和训练深度学习项目克隆项目获得预训练权重训练自己的模型启用tensorbord查看参数每文一语本文是作为后续跑深度学习的一个案例教程…

K - Kingdom‘s Power 贪心,E-奇环_牛客练习赛106 二分图 鸽笼原理,F-座位_概率期望,G-交换_dp​​​​​​

K - Kingdoms Power 贪心 一开始想的是要想路程最小,那么他一定是先去征服size最小的子树是最好的,然后就wa了,正解应该是按照深度来贪心,对于一个节点u的子节点,按照u走完子节点的步数进行排序,先从步数小…

年产3000吨冲压型果味硬糖生产车间工艺设计

目 录 摘 要 I Abstract II 1绪论 1 1.1选题概述 1 1.2市场分析 2 1.3设计参数和质量标准 3 1.3.1主要设计参数 3 1.3.2质量标准 3 2工艺流程设计 5 2.1工艺流程图 5 2.2工艺说明 5 2.2.1领料 5 2.2.2化糖 5 2.2.3过滤 6 2.2.4真空熬制 6 2.2.5冷却 6 2.2.6加辅料、调和 7 2.2.…

使用主成分分析进行模态分解(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

HTML入门零基础教程(五)

嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、图像标签 1.图像标签 2.图标标签的其它属性 3.图像标签属性注意点: 一、图像标签 1.…

Unity工具 - 快捷任务栏(Taskbar)

在实际项目中,我们会使用很多的工具。根据工具的来源,可以分为:工程内工具,工程外工具。 工程内的工具:多数是由Unity 提供IMGUI工具包实现的,它使用OnGUI函数以及实现它的脚本来绘制和管理用户界面&#x…

【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)

一、写在前面二、ECS 云服务是什么三、云服务器的购买与配置购买云服务器密码与安全组配置远程连接配置,使网络用户可以访问到服务器在服务器部署自己的网页一、写在前面 谈起云计算,相信大家都不陌生,可以说它已经颠覆了我们生活中的很多应…

Tomcat服务器的简介

文章目录1.概念1.1 什么是Web服务器?1.2 静态资源和动态资源1.3 常用服务器产品2. Tomcat的安装2.1 下载2.2 解压安装2.3 Tomcat的目录结构2.4 Tomcat服务器的启动和关闭3.项目部署及访问静态资源3.1 创建项目3.2 web项目部署1.概念 1.1 什么是Web服务器&#xff1…

Vue 官方文档2.x教程学习笔记 1 基础 1.4 模板语法 1.4.2 指令

Vue 官方文档2.x教程学习笔记 文章目录Vue 官方文档2.x教程学习笔记1 基础1.4 模板语法1.4.2 指令1 基础 1.4 模板语法 1.4.2 指令 指令 (Directives) 是带有 v- 前缀的特殊 attribute。 指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况)。…

【servelt原理_14_Session对象】

Session对象(重点) 1.Session概述 Session用于记录用户的状态。Session是指在一段时间之内,单个客户端与Web服务端的一连串的交互过程。在一个Session中,客户可能会多次请求访问各种不同的服务器资源 2.Session原理 服务器会为每一次会话分配一个Ses…

3.10、以太网交换机的生成树协议 STP

1、如何提高以太网的可靠性? 若交换机 A 与交换机 B 之间的链路故障 若交换机 A 与交换机 B 和 交换机 C 之间的链路都出现故障 则原来的以太网,变成了三个独立的较小的以太网,它们之间无法通行 1.1、冗余链路提高可靠性 添加冗余链路\col…

Sentinel源码解析-源码环境搭建

文章目录前言一、源码环境搭建1.从github上clone下来sentinel的源码仓库到本地:2. 这里我们想学习1.6版本的sentinel源码,所以切换git分支到release-1.63. 启动sentinel-dashboard:4. 登陆dashboard:5. 启动demo项目:6…

备忘录APP源码和设计报告

摘 要 【关键词】备忘录APP;SQLite数据库;Java语言;Android Studio,Activity,Intent,BaseAdapter 本项目是通过Android Studio开发的一款备忘录手机app,有欢迎页面,登录页面&#x…

MybatisPlus的CRUD接口

create、read、update、delete一、insert 1、插入操作 注意:数据库插入id值默认为:全局唯一id 2、主键策略 (1)ID_WORKER MyBatis-Plus默认的主键策略是:ID_WORKER 全局唯一ID (2)自增策略 要想…

git分支详解——记住这些指令能帮助你解决大部分git的分支问题

Github 之 分支 branch 操作之 查看分支/创建分支/切换分支/提交分支/删除分支/合并分支 等操作 一、简单介绍 二、查看分支 1、查看本地所有分支:git branch 2、查看远程有哪些分支:git branch -r 3、查看所有分支(本地和远程的)…

Egg 1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 1.3.4 添加渲染模板

Egg Egg 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Egg1. 快速开始 Quick Start1.3 一步步 Step by Step1.3.3 添加静态资源1.3.4 添加渲染模板1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 Egg 有一个名为stat…

【K8S系列】第十讲:kubectl 命令大全

目录 序言 1.基本介绍 1.1 命令格式介绍 2 基础命令 2.1 create 2.2 delete 2.2.1 根据yaml删除资源 2.2.1 根据名称删除资源 2.3 get 2.3.1查看pod列表 2.3.2 查看node 2.3.3 查看svc 2.3.4 查看all 2.3.5 查看ns 2.3.4 查看deploy 2.3 run 2.4 explain 2.…

基于PHP+MySQL珠宝销售网站的设计与开发

大多数时候珠宝是一种身份和高贵的象征,一个价值不菲的珠宝会给人一种高贵的感觉,同时珠光宝气也是人们非常喜欢的一种氛围,尤其是对女生来说,那种金光闪闪的东西总是会在无形中吸引她们的注意力,但是很多时候人们只能到商场或者专卖店购买珠宝,这种珠宝一方面鱼龙混杂,以次充好…