#include <opencv2/opencv.hpp>
#include <iostream>
#include <algorithm>
using namespace std;
cv::Mat maxFilter(const cv::Mat& image, int kernelSize) {
// 获取图像的高度和宽度
int height = image.rows;
int width = image.cols;
// 计算边界
int pad = kernelSize / 2;
// 创建输出图像
cv::Mat filteredImage = cv::Mat::zeros(image.size(), image.type());
// 遍历图像的每一个像素
for (int i = 0; i < height; ++i) {
for (int j = 0; j < width; ++j) {
// 提取当前区域
uchar maxVal = 0; // 假设图像是灰度图
for (int m = -pad; m <= pad; ++m) {
for (int n = -pad; n <= pad; ++n) {
int x = std::min(std::max(i + m, 0), height - 1);
int y = std::min(std::max(j + n, 0), width - 1);
maxVal = std::max(maxVal, image.at<uchar>(x, y)); // 对于灰度图
}
}
filteredImage.at<uchar>(i, j) = maxVal;
Opencv 实现最大和最小值滤波、不同卷积核大小的滤波
OpenCV与计算机视觉及人工智能
于 2024-11-28 15:37:01 首次发布

最低0.47元/天 解锁文章
352

被折叠的 条评论
为什么被折叠?



