news 2026/5/2 16:32:03

图像的基本操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像的基本操作
读取图像
imread 函数用于读取图像,语法:Matimread(filename,flags);
filename:图像文件的路径。
flags:读取方式,常见取值如下:
值 含义 数值
IMREAD_UNCHANGED 保持图片原有格式不变 -1
IMREAD_GRAYSCALE 将图像调整为单通道的灰度图像0
IMREAD_COLOR 将图像调整为 3通道的BGR图像(默认值)1

例子:Mat img=imread("image.jpg",IMREAD_COLOR);

显示图像
namedWindow函数创建一个指定名称的窗口如果同名的窗口已经存在,函数不执行任何操作。
voidnamedWindow(constString&winname,intflags=WINDOW_AUTOSIZE);
winname:要创建的窗口名称
flags:窗口标志。常用值包括WINDOW_AUTOSIZE(自动调整窗口大小以适应图像)。

例子:namedWindow("原图",WINDOW_AUTOSIZE);

imshow函数用于显示图像,voidimshow(constString&winname,InputArray mat);
winname:显示窗口名称。
mat:要显示的图像。

例子:imshow("原图",img);

waitKey函数用于等待按键输入并获取返回值,intcv::waitKey(intdelay=0);
delay:等待时间(毫秒),默认值为0,表示无限等待。

例子:intkey=waitKey(0);

destroyWindow函数用于销毁指定窗口voiddestroyWindow(constString&winname);
winname:要销毁的窗口名称。
例子:destroyWindow("原图");
destroyAllWindows 函数用于销毁所有已创建的窗口:voidcv::destroyAllWindows();

例子:destroyAllWindows();

保存图像
imwrite函数用于将图像保存到文件
boolcv::imwrite(constString&filename,InputArray img,conststd::vector<int>&
params=std::vector<int>());
filename:保存图像的完整路径名。路径+文件名+文件扩展名
img:要保存的图像。
params:可选的保存参数。
返回值 :保存成功时返回true,否则返回false

例子:boolsuccess=imwrite("output.jpg",img);

Scalar标量
ScalarOpenCV中的一个结构体,代表标量scalar)。
typedef structScalar{
doubleval[4];
}Scalar;

例子:MatM(7,7,CV_32FC2,Scalar(1,3));

图像窗口滑动条
图像窗口滑动条,顾名思义,就是在显示图像的窗口中创建一个可以通过滑动改变数值的滑动条。 在OpenCV 4 中,可以通过createTrackbar()函数在显示图像的窗口上创建滑动条。
例子:
intcv::createTrackbar(
constString&trackbarname,//滑动条名称
constString&winname,//创建滑动条的图像窗口名称
int *value,//滑动条位置值的指针
intcount,//滑动条的最大值,默认是0
TrackbarCallback onChange=0,//滑动条改变时调用的回调函数
void *userdata=0//传递给回调函数的额外数据,默认为`NULL
);
voidFoo(intpos,void *userdata);
/*
○ pos是滑块的当前位置值。

○ userdata是用户自定义数据。此参数为NULL,则不会调用回调函数,仅更新滑块数值。*/

分离通道
多通道矩阵为例,使用OpenCV提供的split函数。
//将多通道矩阵分离为多个单通道矩阵。

voidsplit(constMat&src,std::vector<Mat>&mv);

合并通道
voidmerge(constMat*mv,size_tcount,OutputArray dst);

voidmerge(conststd::vector<Mat>&mv,Mat&dst);

获得Mat中某一区域的值
使用成员函数row(i)col(j)可以得到矩阵的第i行或第j列。
intr=1;
intc=0;
//矩阵的第r
Mat nr=mat.row(r);
//矩阵的第c
Mat nc=mat.col(c);
Range(intstart,intend);//该序列为左闭右开,即[start, end)
使用成员函数rowRangecolRange可以得到矩阵的连续行或连续列。
rowRange(intstart,intend);
colRange(intstart,intend);
需要特别注意的是,成员函数rowcolrowRangecolRange返回的矩阵其实是指向原矩阵的。使用成员函数 clonecopyTo 可以复制矩阵区域的内容。
matrix.rowRange(2,4).clone();
matrix.rowRange(2,4).copyTo(r_range);
使用Rect类获取矩形区域
OpenCV提供了一种简单的方式,使用Rect(RectRectangle的缩写,矩形的意思)构造一个矩形有多种方式。
Rect(intx,inty,intwidth,intheight);
Rect(intx,inty,Size.size);
Rect(Point2i&pt1,Point2i&pt2);
Mat roi1=matrix(Rect(Point(2,1),Point(4,3)));//左上角坐标和右下角坐标
Mat roi2=matrix(Rect(2,1,2,2));// x, y,宽度,高度
Mat roi3=matrix(Rect(Point(2,1),Size(2,2)));//左上角坐标和尺寸
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:24:54

Linly-Talker支持背景虚化与美颜滤镜

Linly-Talker支持背景虚化与美颜滤镜 在直播、虚拟客服和在线教育日益普及的今天&#xff0c;数字人已不再是科幻电影中的概念&#xff0c;而是逐渐成为企业服务和内容创作的重要工具。然而&#xff0c;一个“看起来专业”的数字人&#xff0c;往往需要复杂的后期处理——比如抠…

作者头像 李华
网站建设 2026/5/1 13:29:23

php.ini会缓存到opcache吗?

php.ini 不会被 OPcache 缓存。这是对 OPcache 作用范围的常见误解。一、OPcache 的设计目标&#xff1a;缓存什么&#xff1f; OPcache 的核心功能是&#xff1a;缓存 PHP 脚本编译后的字节码&#xff08;Opcodes&#xff09;&#xff0c;避免重复解析和编译。✅ OPcache 缓存…

作者头像 李华
网站建设 2026/5/1 16:28:52

Linly-Talker与Unity3D联动开发虚拟偶像

Linly-Talker与Unity3D联动开发虚拟偶像 在直播带货的深夜&#xff0c;一位“二次元少女”正用甜美的声线与弹幕互动&#xff1a;“这双鞋超适合春天穿搭哦~”&#xff1b;而在另一间办公室里&#xff0c;一个沉稳的AI数字人正在为员工讲解企业制度。她们并非真人主播或预先录制…

作者头像 李华
网站建设 2026/4/30 17:35:57

一张人脸照片+文本会说话的数字人?Linly-Talker做到了

一张人脸照片文本会说话的数字人&#xff1f;Linly-Talker做到了 在短视频与直播内容爆炸式增长的今天&#xff0c;越来越多的企业和个人开始尝试用“虚拟形象”来传递信息。但你有没有想过&#xff0c;只需要一张自拍和一段文字&#xff0c;就能让这张脸开口说话、讲解知识、甚…

作者头像 李华
网站建设 2026/5/1 14:06:29

Linly-Talker在直播带货中的潜力挖掘

Linly-Talker在直播带货中的潜力挖掘 如今的直播间早已不是简单“叫卖”的舞台。用户提问瞬息万变&#xff0c;从“这款面膜适合敏感肌吗&#xff1f;”到“和昨天那款比有什么升级&#xff1f;”&#xff0c;再到“现在下单有没有赠品&#xff1f;”——每一秒都在考验主播的知…

作者头像 李华
网站建设 2026/5/1 10:15:32

开发者必看:Linly-Talker源码结构与模块化设计分析

Linly-Talker 源码架构深度解析&#xff1a;如何打造一个实时、可扩展的 AI 数字人系统 在虚拟主播、AI 教师、数字客服等应用层出不穷的今天&#xff0c;构建一个“会听、会说、会表达”的数字人系统已不再是影视特效工作室的专属能力。随着多模态 AI 技术的成熟&#xff0c;…

作者头像 李华