千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:西安千锋IT培训  >  技术干货  >  OpenCV系列教程(三)Mat 像素统计技术

OpenCV系列教程(三)Mat 像素统计技术

来源:千锋教育
发布人:qyf
时间: 2023-01-11 17:26:00

  一、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 代码编译

图片 1

  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

  运行结果:

图片 2

  3 锐化操作

  在对像素邻域进行计算时,通常用一个核心矩阵来表示。这个核心矩阵展现了如何将与计算相

  关的像素组合起来,才能得到预期结果。针对本节使用的锐化滤波器,核心矩阵可以是这样的:

图片 3

  除非另有说明,当前像素用核心矩阵中心单元格表示,又叫卷积核或相关核,核心矩阵中的每

  个单元格表示相关像素的乘法系数,结果像素通过核心矩阵得到的结果,即是这些乘积的累加。核

  心矩阵的大小就是邻域的大小(这里是 3×3),计算过程如下

图片 4

  滤波处理接口 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)

图片 5

图片 6

  执行结果

图片 7

  还可以做如下尝试

图片 8

  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: 使用缺省值

图片 9

图片 10

  执行结果

图片 11

图片 12

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

c++获取文件大小

2023-03-14

OpenCV系列教程(四) 计算 N 维数据关系

2023-01-11

OpenCV系列教程(三)Mat 像素统计技术

2023-01-11

最新文章NEW

jquery字符串转数字

2023-04-21

tomcat端口号配置

2023-03-20

搭建hadoop高可用集群

2023-03-16

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>