编程学习
🖼️C++OpenCV(4):图像截取与掩膜操作
00 分钟
2023-7-18
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
💡
水寒江静,满目青山,载月明归。——黄庭坚《诉衷情》
🔆
文章首发于我的个人博客:欢迎大佬们来逛逛

图像截取

ROI操作,指的是:region of interest,感兴趣区域。
我们可以对一张图片的某个感兴趣的部分进行截取然后操作,这个截取的过程叫做ROI操作。
通过三种方法实现ROI操作:
  • Rect选定范围
  • Range选定范围
  • selectROI 专用API选择感兴趣区域,
案例代码:
其中具有一个selectROIs的版本,可以让我们选择多个区域。
选择一个区域后按下回车,即可保存这个部分到一个std::vector<Rect>& 中,因此最终的全部选择的区域都在这个Rect的容器中。
其中我们选择好区域后,在使用Mat重载的() 运算符即可做到在这张图片中截取一部分:
原型如下:
notion image

图像掩膜操作

掩膜操作指的是:用一个矩阵和原图像进行卷积运算,重新计算像素值。
因此我们需要定义一个权重表:
  • 掩膜矩阵
  • 计算公式
掩膜操作可以提高图像的对比度,对比度提高可以增加图像感官度、锐化,让看起来有点模糊的图像更清晰。
使用以下公式可以提高图像的对比度:
对于这个公式的掩膜矩阵可以表示成如下的形式:
notion image
因此我们在定义掩膜矩阵的时候就可以使用这个。
我们通过两种方式实现图片的掩膜操作:
  • filter2D实现
    • 我们使用Mat_来创建一个指定为3*3的掩膜矩阵,并且完成赋值
    • 接着使用 filter2D来实现操作。
  • 像素点实现,即对每个像素点执行上面的公式计算
完整代码实现:
  • testFilter2D 使用 filter2D完成掩膜计算。
  • testPixel 使用像素点完成掩膜计算。
notion image

 

评论
  • Twikoo
  • Valine