OpenCV系列教程(三)Mat 像素统计技术
一、Mat 像素统计技术
1 opencv 常用类和方法
1.1 Mat 类
Mat 是一个基本图像容器,也是一个类,数据由两个部分组成: 矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所 选存储方法的不同矩阵可以是不同的维数)的指针。
1.2 imread()
Mat imread( const String& filename, int flags = IMREAD_COLOR );
功能:读取图片文件中的数据
参数:
filename:图片路径
flags:指定读取图片的颜色类型,注意:opencv 版本不同,宏可能不一样
opencv3.2.0 中
IMREAD_GRAYSCALE 值为 0,表示显示灰度图
IMREAD_COLOR 值为 1,表示显示原图
返回值:Mat 类对象
1.3 imshow()
void imshow(const String& winname, InputArray mat);
功能:显示照片
参数:
winname:显示照片窗口的名称
mat:imread 的返回值
返回值:无
1.4 waitKey()
int waitKey(int delay = 0)
功能:在一个给定的时间内(单位 ms)等待用户按键触发,如果用户没有按下键,则一直阻塞
参数:
delay:用于设置在显示完一帧,图像后程序等待“delay”ms 再显示下一帧视频,如果 waitKey(0)
则只会显示第一帧视频
返回值:按键的 ASCII 码值
1.5 putText()
void putText( Mat& img, const string& text,
Point org, int fontFace,
double fontScale,
Scalar color,
int thickness=1, int lineType=8 );
功能:在图像上添加文字
参数:
img:待添加文字的图像
text:字符串,不支持中文
org:待写入的首字符左下角坐标
fontFace:字体类型,FONT_HERSHEY_SIMPLEX ,FONT_HERSHEY_PLAIN ,FONT_HERSHEY_DUPLEX 等
fontScale:字体大小
color:字体颜色,颜色用 Scalar(BGR)表示
Thickness:字体粗细
lineType:线型,默认值是 8
返回值:无
2 opencv 代码编译
2.1 直接命令行编译
g++ -o opencv_t t.cpp
`pkg-config --cflags --libs opencv`
2.2 通过 Makefile 编译
从 opencv-3.2.0/samples/cpp/example_cmake/拷贝一个 CMakeLists.txt,将文中三处 example 改
成你的 cpp 文件名,并添加下面一行:
set(OpenCV_DIR /home/edu/ai/opencv-3.2.0/mybuild)
然后执行配置编译命令:
cmake .
make
运行结果:
3 锐化操作
在对像素邻域进行计算时,通常用一个核心矩阵来表示。这个核心矩阵展现了如何将与计算相
关的像素组合起来,才能得到预期结果。针对本节使用的锐化滤波器,核心矩阵可以是这样的:
除非另有说明,当前像素用核心矩阵中心单元格表示,又叫卷积核或相关核,核心矩阵中的每
个单元格表示相关像素的乘法系数,结果像素通过核心矩阵得到的结果,即是这些乘积的累加。核
心矩阵的大小就是邻域的大小(这里是 3×3),计算过程如下
滤波处理接口 void filter2D()
void filter2D( InputArray src, OutputArray dst, int ddepth, InputArray kernel,Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT );
功能:通过给定卷积核对图像进行滤波处理
参数:
src:源图像
dst:与 src 相同大小、相同通道数的输出图像
ddepth:目标图像期望的深度(一般保持和源图像一致)
kernel:构造核心矩阵内核(协同图像传入 filter2D)
delta:选填过滤后的像素(一般取缺省值 0)
borderType:边框(一般取缺省值 BORDER_DEFAULT)
执行结果
还可以做如下尝试
4 图像重叠操作
像素混合接口 void addWeighted()
void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype = -1);
功能:图像合并处理,合并图片
参数:
src1: 源图像 1
alpha: 图像的权重(0~1 之间)
src2: 源图像 2
beta: 第二张源图像的权重(一般为 1.0-alpha)
gamma: 如果两张相加后亮度不理想 可以使用 gamma 使其亮度效果更好,设置亮度
dst: 两张图像输出的目标图像
dtype: 使用缺省值
执行结果
猜你喜欢LIKE
相关推荐HOT
更多>>javabean是什么?
在Java中,JavaBean是一种符合特定规范的普通Java类,用于封装数据和提供操作数据的方法。JavaBean是一种重要的设计模式,用于实现面向对象编程...详情>>
2023-06-06 16:27:20java零基础入门到精通怎么学?
Java是一门广泛应用于企业级开发和大型应用程序的编程语言。要从零基础入门到精通Java,需要以下步骤和建议:1.学习基础知识:开始学习Java编程...详情>>
2023-06-05 17:02:00token是什么意思
Token是“令牌”的意思,它通常被用于身份验证和授权。在计算机系统中,当用户通过身份验证后,系统会颁发一个Token给用户,用于标识用户身份和...详情>>
2023-04-20 10:57:41虚函数的作用和实现原理
在父类中声明虚函数:在父类中通过在函数声明前加上 virtual 关键字来声明一个虚函数。需要注意的是,虚函数的使用需要谨慎,因为虚函数的调用...详情>>
2023-04-14 14:20:27