OpenCV中的基础操作(一)

数字图像处理——opencv入门 OpenCV介绍 这是一篇关于opencv的学习指南。 首先,opencv可以运行于linux平台、windows平台、Android平台及iOS平台。 在这里,我选择windows平台进行opencv环境的配置。 注意,要使用opencv库,您有两个选择。 一是通过使用预构建的库进行安装,或者通过源文件中创建自己的库进行安装。 我们选择了法一,需要在最新的Microsoft VIsu... 阅读详情

最近天气越来越热,春天的气息也越来越浓了。这篇文章算是我专栏里的第一篇文章了(前面那个算是引言吧),这篇文章中主要介绍OpenCV中的基础操作,包括加载图片、显示图片、保存图片等操作。这篇文章里的大部分内容都来自OpenCV的官方教程,其中也有我自己的理解和一部分数字图像处理中的知识。

函数库

要完成这些操作,我们需要两个函数库:core module和highgui module。前者包括了OpenCV中的基础模块库,比如图片容器Mat;后者包含了负责输入输出操作的函数,如imread和imwrite。

加载图片

首先,我们需要创建一个Mat对象来存储被加载的图片数据,然后就可以使用imread函数来加载图片了。

Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);

第一个参数是所要加载的图片的名字(包括路径),这里我们从命令行参数来获取。OpenCV支持大多数常见的图片格式,如bmp、png、jpeg等等。
第二个参数指定图片的格式:

  • CV_LOAD_IMAGE_UNCHANGED(<0)保持原加载图片的格式不变
  • CV_LOAD_IMAGE_GRAYSCALE(0)加载原图像的灰度(单通道)图
  • CV_LOAD_IMAGE_COLOR(>0)以RGB(三通道)格式加载原图像

如果只有第一个参数,默认会使用第三种格式:

Mat img = imread(filename)

显示图像

在加载完图像之后,我们便可以查看图像了。首先需要创建一个窗口以显示图片:

namedWindow( "Display window", WINDOW_AUTOSIZE );

第一个参数为窗口的名字,第二个参数为图片的处理方式,有以下两种方式:

  • CV_WINDOW_AUTOSIZE:窗口适应原图片大小
  • CV_WINDOW_NORMAL:图片适应窗口大小

在使用第二个参数时,你还需要使用|操作符指定图片是否保持纵横比:CV_WINDOW_KEEPRATIO为保持纵横比,CV_WINDOW_FREERATIO为不保持纵横比。

最后使用imshow函数更新窗口内容为刚刚加载的图片即可:

imshow("Display window", image);

当然,仅仅是这样还是不够的,你会发现运行程序之后,图片一闪而过,根本无法长时间显示图片。因此,我们需要通过waitKey函数设置窗口显示的时间(参数为等待时间,单位为ms)。这里我们设置时间为无限长(参数为0),直到用户按下任意键。

waitKey(0);

保存图片

保存图片的函数用法很简单,一般情况下只会用到前两个参数。第一个参数为图片的名字,记住一定要包含正确的图片格式(bmp、gif、png等),第二个参数为要保存的图片对象。

imwrite("rst_mage.jpg", rst_image);

第三个参数主要针对特定的格式,而且是以编码对(vector

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
imwrite("alpha.png", mat, compression_params);

参考资料

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

OpenCV学习之路(五) 图像的载入、显示和输出 目录   图像的载入与显示 输出图像到文件 综合实例代码 滑动条的创建和使用 鼠标操作 图像的载入与显示 imread() 函数和 imshow() 函数完成了最简单的图像载入和显示。 1. imread() 函数。原型如下: Mat imread(const string&amp; filename, int flags = 1); (1)第一个参数,const stri... 阅读详情

相关推荐

opencv矩阵常用操作(一)

applyColorMap/*颜色重映射*/ cvtColor/*色系转换*/ equalizeHist/*直方图均衡化*/ normalize/*归一化矩阵*/ 例子: void add_image(MainWindow *view) try { constexpr auto rows=1024; constexpr auto cols=1

nanguazhuo的专栏 513

OpenCV--图像的载入-显示-保存

1、imread函数 函数原型及参数含义如下: Mat imread(const string& filename,int flags = 1) /* 第一个参数,const string&类型的filename,填我们需要载入的图片路径名。 在Windows操作系统下,OpenCV的imread函数支持如下类型的图像载入: Windows位图 - *.bmp, *.dib JPEG文件

学习使我快乐 845

Opencv-图像操作与处理入门基本知识(一)

文章目录前言一、图像基础知识二、opencv2.1 基础知识与应用2.1.1 读取图像2.1.2 显示图像2.1.3 显示图像2.1.4 基础操作示例2.2 色彩空间的改变2.3 图像的算术运算2.6 图像金字塔直方图原理与显示掩膜的应用直方图均衡化自适应的直方图均衡化总结 前言 基于python脚本语言开发的数字图片处理包,比如PIL(Python Image Library),Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基础的数字图像处理,功能有限;

HG0724的博客 2万+

OpenCV入门(二)—— 图片读写基本操作

OpenCV学习笔记 基本函数的使用 //之前已定义 using namespace cv; Mat image = imread(); 1.imread()函数 用于读取图像,这个函数打开图像,并以矩阵格式存储图像。 该函数接受两个参数,第一个参数是该图片的路径(用字符串表示),也可以是main函数中的argv参数; 第二个参数默认情况下是可选的,主要用于设定图片格式,其选项有: CV_L...

qq_43872529的博客 807

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

“风色幻想XX:交错轨迹游戏卡顿:从解决d3dx9_xx.dll缺失开始——风色幻想XX优化指南

《风色幻想XX:交错轨迹》作为一款深受玩家喜爱的角色扮演游戏,以其丰富的剧情、独特的角色设定和精美的画面赢得了广泛的赞誉。然而,在游戏过程中,部分玩家可能会遇到游戏卡顿的问题,这不仅影响了游戏体验,还可能让玩家错失精彩的剧情和战斗瞬间。在众多导致游戏卡顿的因素中,d3dx9_xx.dll文件的缺失往往是一个不容忽视的原因。

czl922的博客 1255

color属性 python_Python cv2.CV_LOAD_IMAGE_COLOR属性代码示例

# 需要导入模块: import cv2 [as 别名]# 或者: from cv2 import CV_LOAD_IMAGE_COLOR [as 别名]def _load_cv2(img, grayscale=None):"""TODO"""# load images if given filename, or convert as needed to opencv# Alpha layer j...

weixin_29313547的博客 1568

PHP 对接建行生活订单推送接口

php对接建行订单推送

qq_43647026的博客 559

openCV专栏(一):基础操作

openCV视觉图像python专栏 手把手超详细傻瓜级别教学

亿只萌新的博客 2937

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4508

基于MATLAB的Hough变换指针式仪表识别

综上所述,本文介绍了如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。通过图像预处理、Hough变换和直线提取,我们可以准确地检测指针的位置,并进一步进行仪表读数。本文将介绍如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。在指针式仪表识别中,我们可以利用Hough变换来检测仪表盘上的指针。以上是基于MATLAB的Hough变换指针式仪表识别的详细步骤和源代码示例。根据指针在仪表盘上的位置,我们可以进行角度计算或使用其他技术来获取准确的读数。

techDM的博客 462

OpenCV(一)基础操作

OpenCV3基础操作一、加载图像 imread二、创建窗口 namedWindow三、显示图像 imshow四、修改图像(改变色彩空间)五、保存图像 imwrite六、例程 一、加载图像 imread IMREAD_UNCHANGED(<0) 表示加载原图,不做任何改变 IMREAD_GRAYSCALE(0) 表示把原图作为灰度图像加载进来 IMREAD_COLOR(>0) 表示把原图作为RGB图像加载进来 Mat src = imread("F:\\OpenCV\\t

鲸鱼的博客 354

手把手教你学simulink(41.4)--逆变器电场景示例:基于Simulink的主从控制的多逆变器协同控制(Multi-Inverter Coordinated Control)

需求分析在现代电力系统中,分布式发电和储能系统的广泛应用使得多个逆变器并联运行成为常见的应用场景。为了确保多个逆变器之间的协同工作,实现系统的稳定性和高效性,通常采用主从控制(Master-Slave Control)策略。主从控制通过一个主控制器(Master)来协调多个从控制器(Slave),确保所有逆变器的输出电压、频率和功率分配符合预期目标。本项目将基于Simulink平台,开发一个多逆变器协同控制系统,采用主从控制策略,实现对多个逆变器的精确控制和优化。

MHD0815的博客 304

OpenCV图像基础操作一

Mat类分为了两个部分: 1.矩阵头和指向矩阵数据部分的指针, 2.data就是指向矩阵数据的指针。 下面是VS调试显示属性: flags: flags是int类型,共占32位, 从低位到高位: 0-2位代表depth即数据类型(如CV_8U),OpenCV的数据类型共7类,故只需3位即可全部表示。 3-11位代表通道数channels,因为OpenCV默认最大通道数为512,故只需要9位即可全部表示,可参照下面求通道数的部分。 0-11位共同代表type即通道数和数据类型(如C.

weixin_44152895的博客 615

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 102

Android P车机添加屏幕多指全局自定义手势操作

参照原生状态栏全局下拉手势拦截,实现屏幕全局多指手势响应操作,并对手势进行转换为KeyEvent,以便项目自定义手势行为或应用拦截手势行为。

shusuanly的博客 1250

【OpenCV:从零到一】02:矩阵的掩膜操作

前言 这是我《OpenCV:从零到一》专栏的第二篇博客,想看跟多请戳这。 本文概要 获取图像像素指针 CV_Assert 像素范围处理:saturate_cast() saturate 使饱和,浸透 函数调用filter2D功能 掩膜(mask也称为kennel),在数字图像处理中对应的就是模板运算,是处理图像常用的运算。说白了就是将某个像素的附近的像素的灰度值进行加权运算得到的值再赋给这个像素。 案例代码 大概内容:矩阵的掩膜操作。 解析及注意事项 全注释代码 翻译笔记 ...

weixin_45654405的博客 471

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

一、OpenCV的基本操作

OpenCV是一个功能强大的计算机视觉库,包含多个模块,如图像处理、视频分析、机器学习等。基础操作包括图像的IO操作、绘制几何图形、获取和修改像素点、获取图像属性、图像通道的拆分与合并以及色彩空间的转换。此外,OpenCV还支持图像的算术操作,如图像的加法和混合,这些操作可以用于图像增强和合成。通过这些功能,OpenCV能够处理各种图像处理任务,为计算机视觉应用提供强大的支持。

qq_48904748的博客 1842

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Qt+OpenCV(一)Qt基础操作和使用opencv初识

学习《OpenCV3和Qt5计算机视觉应用开发》笔记

汝安南的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

opencv 学习之 轮廓操作笔记(一)

1、轮廓之外的区域像素置0 根据最小外接矩形,仿射变换至无偏转矩形。外接矩形结构体导出顶点是按顺时针结构排列的,但是起点不定。 int SetExcludeRectZero(Mat & gray, RotatedRect rect) { Point2f vertex1[4], vertex2[4]; //定义外接矩形的4个顶点 //定点的排序为逆时针 rect.poin

落日流沙 941

[opencv] 一、图像腐蚀操作

用OpenCV实现最基本的形态学运算之一——腐蚀,即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。 #include<opencv.hpp> using namespace cv; //包含cv命名空间 int main() { Mat srcImage = imread("1.jpg"); //载入图像 imshow("[原图]腐蚀操作",srcImage); //显示图像 ...

枪枪枪的博客 1155

opencv基础操作(一)

opencv基本的图像处理操作: (1)加载图像:imread(a,b); Mat src = imread("1.jpg"); imread(某路径(绝对路径)下的文件名称,读取方式)读取图片文件,保存在Mat类型中 IMREAD_UNCHANGED:以原图的形式读进来 IMREAD_GRAYSCALE:以灰度图的形式读进来 IMREAD_COLOR:以RGB彩色图的形式读进来(默认的形...

little_0605的博客 3220

Python+OpenCV(一)——基础操作

Python+OpenCV学习笔记(一) 学习视频:python+opencv3.3视频教学 基础入门 读取图像 # 例1:测试OpenCV是否可用 import cv2 as cv # 引入OpenCV模块 src = cv.imread("C:/Users/Administrator/Pictures/PS/11.png") # 读取图像 # 通过GUI创建窗口,窗口大小根据照片大小自动调整 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE

Cat_South_North的博客 1087

opencv-python库基础操作(一)

点赞再看,养成习惯! 点赞再看,养成习惯! 点赞再看,养成习惯! opencv-python库基础操作 0.首先使用pip install opencv-python进行下载 不过在python中导入opencv库的时候需要 "import cv2"来进行导入 下面用一只非常经典的猫咪开始练习使用opencv 1.首先导包 import cv2 #opencv读取的格式是BGR,与一般的RGB不同 import matplotlib.pyplot as plt import numpy as np

qq_42839893的博客 360

Opencv学习(一)按位操作

欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体...

c19961227的博客 830

OpenCV(一)——图像操作

输入与输出 对于图片(以Python代码为例) 1.从文件加载图像: img = cv.imread(filename) 2.如果读取的是jpg文件,默认情况下会创建3通道图像。如果需要灰度图像,则需要使用: img = cv.imread(filename, cv.IMREAD_GRAYSCALE) 注意:文件的格式取决于其内容(前几个字节)。要将图像保存到文件: cv.im...

xLi的博客 471
上一篇: 从OpenCV学习数字图像处理
下一篇: OpenCV的安装与配置(ubuntu)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值