ZBLOG

finalAverageImage转换为粗糙

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

  1. #include <iostream>
  2. #include <vector>
  3. #include <opencv2/opencv.hpp>
  4. cv::Mat calculateAverageImage(const std::vector<cv::Mat>& images) {
  5. if (images.empty()) {
  6. std::cerr << "Error: Image vector is empty." << std::endl;
  7. return cv::Mat();
  8. }
  9. // 获取第一张图像的尺寸信息
  10. int rows = images[0].rows;
  11. int cols = images[0].cols;
  12. // 创建一个与输入图像相同大小和类型的累加器矩阵
  13. cv::Mat accumulator(rows, cols, CV_32FC1, cv::Scalar(0.0));
  14. // 对每张输入图像进行累加
  15. for (const auto& image : images) {
  16. if (image.rows != rows || image.cols != cols || image.type() != CV_8UC1) {
  17. std::cerr << "Error: Image sizes or types are not consistent." << std::endl;
  18. return cv::Mat();
  19. }
  20. cv::Mat convertedImg;
  21. image.convertTo(convertedImg, CV_32FC1); // 转换为浮点型
  22. accumulator += convertedImg; // 累加到accumulator中
  23. }
  24. // 计算平均值并转换回8位无符号整型图像
  25. accumulator /= images.size();
  26. cv::Mat averageImage;
  27. accumulator.convertTo(averageImage, CV_8UC1);
  28. return averageImage;
  29. }
  30. cv::Mat makeImageRough(const cv::Mat& image, int scaleFactor) {
  31. cv::Mat roughImage;
  32. cv::resize(image, roughImage, cv::Size(), scaleFactor, scaleFactor, cv::INTER_NEAREST);
  33. return roughImage;
  34. }
  35. int main() {
  36. // 假设有三张8位单通道灰度图像,命名为img1、img2、img3,并已经加载到cv::Mat对象中
  37. // 将这些图像存储在一个向量中
  38. std::vector<cv::Mat> images = {img1, img2, img3};
  39. // 计算平均像素图
  40. cv::Mat averageImage = calculateAverageImage(images);
  41. // 将平均像素图变得粗糙
  42. int scaleFactor = 4; // 缩放因子,值越大越粗糙
  43. cv::Mat roughAverageImage = makeImageRough(averageImage, scaleFactor);
  44. // 显示粗糙的平均像素图
  45. cv::imshow("Rough Average Image", roughAverageImage);
  46. cv::waitKey(0);
  47. return 0;
  48. }

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

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?