- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
使用3x3矩形结构元素腐蚀图像。
该函数通过使用中心作为锚点的3x3矩形结构元素来腐蚀源图像。腐蚀操作可以应用多次(迭代)。对于多通道图像,每个通道独立处理。支持的输入矩阵数据类型包括 CV_8UC1、CV_8UC3、CV_16UC1、CV_16SC1 和 CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。
cv::gapi::erode3x3 是 OpenCV G-API 模块中用于执行图像腐蚀操作的特定函数,它使用 3x3 大小的固定结构元素(即核)。这个函数简化了标准 cv::gapi::erode 函数的使用,因为你不需要手动定义一个 3x3 的核。
注意:
如果硬件支持,则会进行向最近偶数的舍入;如果不支持,则向最近的整数舍入。
函数的文本ID为 “org.opencv.imgproc.filters.erode”。
函数原型
GMat cv::gapi::erode3x3
(
const GMat & src,
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue()
)
参数
- 参数 src:输入图像。
- 参数 iterations:腐蚀操作被应用的次数。
- 参数 borderType:像素外推方法,参见 cv::BorderTypes。
- 参数 borderValue:在使用常量边界情况下边界的值。
代码示例
include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp> // 确保包含核心操作头文件
#include <opencv2/opencv.hpp>
int main()
{
// 加载图像
cv::Mat src = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE);
if (src.empty())
{
std::cerr << "无法加载图像" << std::endl;
return -1;
}
// 创建GAPI图:定义输入输出
cv::GMat in;
auto eroded = cv::gapi::erode3x3(in);
// 创建GComputation对象
cv::GComputation comp(cv::GIn(in), cv::GOut(eroded));
// 应用到输入图像上
cv::Mat out;
// 直接应用,不传递额外的编译参数
comp.apply(src, out);
// 显示结果、
cv::imshow("Original Image", src);
cv::imshow("Eroded Image", out);
cv::waitKey();
return 0;
}