OpenCV基础知识与基本操作

news2024/12/27 1:17:08

在这里插入图片描述

1 基本语法操作

1 读取图像

读取图像的如法如下

img = cv2.imread('图像地址'[,flags])

cv2暂不支持读取中文路径,所以务必确认地址中不含中文。
flags为选填项,可以设置读取图片时的处理方式:

  1. cv2.IMREAD_UNCHANGED:-1,读入图像并保持其透明度信息。
  2. cv2.IMREAD_GRAYSCALE:0,读入灰度图像。
  3. cv2.IMREAD_COLOR:1,读入彩色图像(默认值)。
  4. cv2.IMREAD_REDUCED_COLOR_2:2,读入图像,并将其转换为2倍缩小的颜色图像。
  5. cv2.IMREAD_REDUCED_GRAYSCALE_2:3,读入图像,并将其转换为2倍缩小的灰度图像。
    填写前面的字符或后面的数字代码具有同样的效果,即:
img = cv2.imread('图像地址', cv2.IMREAD_GRAYSCALE)
img = cv2.imread('图像地址', 0)

以上两行代码都可以读入灰色图像。
读取进图像后,图像数据将会以像素值列表的形式保存。

2 展示图象

首先,使用namedWindow可以建立一个窗口

cv2.namedWindow('窗口名称')

之后,在窗口中显示图像

cv2.imshow('窗口名称', 图像变量)

如果遇到不存在的窗口,也会根据名称自动建立该窗口,不会报错。

3 销毁窗口

如果窗口后续不再需要,可以手动关闭或者使用代码销毁。

cv2.destroyWindow('窗口名称')
cv2.destroyAllWindows( )

以上分别为销毁指定窗口和销毁全部窗口。
在实际项目中,该功能通常与按键操作联合使用。

img=cv2.imread('图像地址') 
cv2.imshow("demo", img ) 
cv2.waitKey() 
cv2.destroyWindow("demo")

在上面的代码中,waitkey函数用来等待按键,函数可传入的参数为delay值。这一函数的功能是,当产生按键后继续执行代码。虽然函数为保存函数的返回值,但该函数具有返回值,返回值为案件的ASCII码。
如果参数delay的值为一个正数,则在这段时间内,程序等待按下键盘按键。当有按下键盘按键的事件发生时,就继续执行后续程序语句;如果在delay参数所指定的时间内一直没有这样的事件发生,则超过等待时间后,继续执行后续的程序语句。

这段代码是实现了在按下任意按键后,摧毁demo窗口。

4 图像保存

OpenCV提供了函数cv2.imwrite(),用来保存图像,该函数的语法格式为:

retval = cv2.imwrite( filename, img[, params] )

尽管该函数的返回值并不常用,但确实有返回值。如果保存成功,则返回逻辑值真(True);如果保存不成功,则返回逻辑值假(False)。

2 OpenCV常用库

除了OpenCV主库之外,还具有一些贡献库作为OpenCV的扩展模块。该扩展库的名称为opencv_contrib,主要由社区开发和维护,其包含的视觉应用比OpenCV主库更全面。OpenCV贡献库中包含非OpenCV许可的部分,并且包含受专利保护的算法。因此,在使用该模块前需要特别注意。

以下是一些常用的OpenCV贡献库:

  1. objdetect:该库包含了许多目标检测算法,用于检测图像中的物体,例如人脸,眼睛,车辆等。它支持Haar级联分类器,深度学习网络等多种技术。
  2. imgproc:该库包含了许多图像处理算法,用于对图像进行预处理,例如缩放,旋转,阈值化等。它还包括许多图像滤波器,例如高斯滤波器,中值滤波器等。
  3. video:该库包含了许多视频处理算法,用于从视频中提取信息,例如跟踪物体,检测运动等。它支持视频编码和解码,以及视频文件的读写。
  4. calib3d:该库包含了许多相机标定和三维重建算法,用于计算相机的内部参数和外部参数,以及从二维图像重建三维环境。
  5. photo:该库包含了许多图像增强算法,用于改善图像质量,例如去噪,消除曝光不均等。它还包括图像合成和混合算法,用于将多张图像组合在一起。

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

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

相关文章

一天一道力扣题

300. 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列…

es-04搜索和查询

文章目录搜索和查询查询的上下文查询语法1.Searchtimeout:2.ES常用查询:(1)Query_string:(2)Query DSL:(3)Full-text queries:全文检索(5)Query and filter:查询和过滤Deep paging图解Scroll search&#x…

Centos7基于docker搭建gitlab mysql tomcat

STEP1 搭建gitlab$ sudo yum install docker-ce $ sudo systemctl start docker搜索Gitlab镜像 并拉取$ docker search gitlab $ docker pull beginor/gitlab-ce:11.0.1-ce.0 //选择自己要安装的版本在服务器本地创建需要映射的文件 etc(配置) data&…

网关服务限流熔断降级分布式事务

目录一、网关服务限流熔断降级二、Seata--分布式事务1、分布式事务基础①事务②本地事物③分布式事务④分布式事务的场景2、分布式事务解决方案①全局事务②最大努力通知③TCC事务3、Seata介绍4、Seata实现分布式事务控制①案例基本代码(异常模拟)②启动…

机器学习调参

机器学习调参常用调参方法举例K邻近算法(最常规版本)加入交叉验证加上网格搜索GridSearchCV函数介绍GridSearchCVcross_val_score常用调参方法举例 sklearn使得我们在很多编写代码的时候更多的工作倾向于调参数而不是去写算法本身,本篇文章整…

HTML表单(属性/元素/输入类型/输入属性):看这一篇就够了

HTML表单 HTML 表单用于搜集不同类型的用户输入。 <form> 元素 HTML 表单用于收集用户输入。 <form> 元素定义 HTML 表单&#xff1a; 实例 <form>form elements</form> HTML 表单包含表单元素。 表单元素指的是不同类型的 input 元素、复选框、单…

maven 命令指定配置文件打包springboot项目

再开发过程中&#xff0c;通常用工具集成了maven&#xff0c;很少直接用maven命令操作打包&#xff0c;记不住&#xff0c;麻烦有时候工具也出现问题&#xff0c;只能用命令行下面很有必要记录一下这个过程我这里用idea编辑器&#xff0c;项目原因 打包本地配置环境可以&#x…

Oracle MAA 参考架构

文章目录总览青铜青铜 MAA 参考架构青铜特性青铜停机时间总结白银白银 MAA 参考架构白银特性白银停机时间总结黄金黄金 MAA 参考架构远程备库多备库备库读取器农场跨区域远程同步备库黄金特性黄金停机时间总结白金白金 MAA 参考架构白金特性白金停机时间总结参考文档总览 图1 …

Springboot+vue+hadoop+java图书个性化推荐系统

前台首页功能模块 3.1首页 图书个性化推荐系统&#xff0c;在前台首页可以查看首页、图书信息、好书推荐、留言反馈、个人中心、后台管理等内容&#xff0c;如图 3.2图书信息 在图书信息页面通过查看图书编号、图书名称、图书类别、图片、作者、出版社、版次、数量、点击次数等…

python自学之《21天学通Python》(10)——正则表达式

第13章 正则表达式 最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。在这些领域中有对计算&#xff08;自动控制&#xff09;的模型和对形式化语言描述与分类的研究。 程序员所用的正则表达式是指用某种模式去匹配一类具有共同特征的字符串。正则表达…

ant-design V4升级V5记录(成功篇)

官方文档&#xff1a;https://ant.design/docs/react/migration-v5-cn 1、安装运行工具之前&#xff0c;提交本地修改内容&#xff1b; 2、工具运行完&#xff0c;根据提示修改文件问题&#xff1b; 3、移除config文件中module&#xff0c; [import,{libraryName:antd, libr…

负载均衡上传webshell+apache换行解析漏洞

目录一、负载均衡反向代理下的webshell上传1、nginx负载均衡2、负载均衡下webshell上传的四大难点难点一&#xff1a;需要在每一台节点的相同位置上传相同内容的webshell难点二&#xff1a;无法预测下一次请求是哪一台机器去执行难点三&#xff1a;当我们需要上传一些工具时&am…

Jenkins创建多分支流水线

Jenkins创建多分支流水线一、准备工作二、安装插件1、安装Docker和Docker Pipeline2、安装Blue Ocean3、安装Publish Over SSH三、创建多分支流水线四、配置以及脚本四、构建项目在我们的实际开发过程中&#xff0c;我们势必会存在多个分支进行不同的研发需要&#xff0c;这个时…

【LoRa 与 LoRaWAN】知识点汇总

本文主要记录【LoRa 与 LoRaWAN】知识点汇总&#xff0c;知识均来源于网络&#xff0c;纯属资料汇总与搬运 涉及到lora基本知识点&#xff0c;lora芯片的工作分析&#xff0c;专业名词解释 【LoRa 与 LoRaWAN】知识点汇总1.Lora和LoraWAN的区别2. lora 相关知识点汇总2.1 Lora调…

MG996R舵机介绍

舵机简介舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具&#xff0c;如飞机、潜艇模型&#xff0c;遥控机器人中已经得到了普遍应用。舵机主要是由外壳、电路板、驱动马达、减速器与位置…

C语言入门教程||C语言 循环||C语言 函数

C语言 循环有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执…

蓝桥杯刷题021——填字母游戏(DFS)

2017国赛 题目描述 小明经常玩 LOL 游戏上瘾&#xff0c;一次他想挑战 K 大师&#xff0c;不料 K 大师说&#xff1a; "我们先来玩个空格填字母的游戏&#xff0c;要是你不能赢我&#xff0c;就再别玩 LOL 了"。 K 大师在纸上画了一行 n 个格子&#xff0c;要小明和…

go语言的并发编程

并发编程是 Go语言的一个重要特性,而 go语言也是基于此而设计出来的。 本文将会介绍如何使用go-gc中的“runtime”方法实现 go语言中的并发编程。 在之前的文章中,我们已经对 runtime方法进行了详细介绍,这次文章将对 runtime方法进行深入分析,并讲解如何在go-gc中使用该方…

Java NIO学习(二):Channel通道

2.1 Channel 概述Java NIO 的通道类似流&#xff0c;但又有些不同&#xff1a;既可以从通道中读取数据&#xff0c;又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个 Buffer&#xff0c;或者总是要从一个 Buffer 中写入。2.2 Ch…

PrimoBurner SDK for .NET

PrimoBurner SDK for .NET PrimoBurnerSDK是一个CD、DVD和蓝光刻录工具开发工具包。PrimoBurner是跨平台的&#xff0c;它还提供了一个全面灵活的API&#xff0c;用于快速轻松地实现各种燃烧/翻录替代方案。现在PrimoBurner迫使许多卫生、国防、执法、娱乐和其他部门。 PrimoBu…