ZBLOG

finalAverageImage转换为粗糙

如果你想将计算得到的平均像素图变得粗糙,你可以使用OpenCV中的图像缩放函数resize来实现。下面是修改后的代码:

#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>

cv::Mat calculateAverageImage(const std::vector<cv::Mat>& images) {
    if (images.empty()) {
        std::cerr << "Error: Image vector is empty." << std::endl;
        return cv::Mat();
    }
    
    // 获取第一张图像的尺寸信息
    int rows = images[0].rows;
    int cols = images[0].cols;
    
    // 创建一个与输入图像相同大小和类型的累加器矩阵
    cv::Mat accumulator(rows, cols, CV_32FC1, cv::Scalar(0.0));
    
    // 对每张输入图像进行累加
    for (const auto& image : images) {
        if (image.rows != rows || image.cols != cols || image.type() != CV_8UC1) {
            std::cerr << "Error: Image sizes or types are not consistent." << std::endl;
            return cv::Mat();
        }
        
        cv::Mat convertedImg;
        image.convertTo(convertedImg, CV_32FC1);  // 转换为浮点型
        
        accumulator += convertedImg;  // 累加到accumulator中
    }
    
    // 计算平均值并转换回8位无符号整型图像
    accumulator /= images.size();
    
    cv::Mat averageImage;
    accumulator.convertTo(averageImage, CV_8UC1);
    
    return averageImage;
}

cv::Mat makeImageRough(const cv::Mat& image, int scaleFactor) {
    cv::Mat roughImage;
    cv::resize(image, roughImage, cv::Size(), scaleFactor, scaleFactor, cv::INTER_NEAREST);
    return roughImage;
}

int main() {
   // 假设有三张8位单通道灰度图像,命名为img1、img2、img3,并已经加载到cv::Mat对象中
   
   // 将这些图像存储在一个向量中
   std::vector<cv::Mat> images = {img1, img2, img3};
   
   // 计算平均像素图
   cv::Mat averageImage = calculateAverageImage(images);
   
   // 将平均像素图变得粗糙
   int scaleFactor = 4;  // 缩放因子,值越大越粗糙
   cv::Mat roughAverageImage = makeImageRough(averageImage, scaleFactor);
   
   // 显示粗糙的平均像素图
   cv::imshow("Rough Average Image", roughAverageImage);
   cv::waitKey(0);
   
   return 0;
}

在这个修改后的代码中,我添加了一个名为makeImageRough的函数,它接受一个输入图像和一个缩放因子,并使用最近邻插值方法对图像进行缩小操作。然后,在主函数中调用makeImageRough函数来生成粗糙版本的平均像素图。

你可以通过调整scaleFactor的值来控制图像的粗糙程度。较大的缩放因子将导致更明显的像素块效果,使图像看起来更加粗糙。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=16762

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?