gpt4 book ai didi

c++ - 循环彻底改变数组元素的 3x3 网格

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:33 25 4
gpt4 key购买 nike

我正在尝试制作一个循环,我可以在其中执行以下操作:-

x x x y y y y y
x x x y y y y y
x x x y y y y y
y y y y y y y y
y y y y y y y y

(顺便说一下,上面是一个 8x5 的网格。)

  1. 获取所有标记为 x 的值
  2. 对所有 9 个 x 值求和
  3. 将 x 值替换为我刚找到的总和的值
  4. 然后将所有 x 值乘以 1/9
  5. 然后移动到下一个 x 值 block ,如下所示:-
y y y x x x y y
y y y x x x y y
y y y x x x y y
y y y y y y y y
y y y y y y y y

我试过这样做:-

for(int j=0;j<image.rows;j++)
{
for (int i=0;i<image.cols;i++)
{
for (int y=0; y < 9; y++) {
sum = image.at<uchar>(j,i) + sum;
change = sum/9;
}
image.at<uchar>(j,i) = change;
}
}

但这就是行不通。

最佳答案

您正在逐个像素地迭代图像,但为了执行您想要的操作,您需要按 3x3 像素为一组进行迭代:

for(int j = 0; j < image.rows; j += 3)
{
for (int i = 0; i < image.cols; i += 3)
{
uchar sum = 0;
for(int x = 0; x < 3; ++x) {
for(int y = 0; y < 3; ++y) {
sum += image.at<uchar>(j + x,i + y);
}
}
sum /= 9;

for(int x = 0; x < 3; ++x) {
for(int y = 0; y < 3; ++y) {
image.at<uchar>(j + x,i + y) = sum ;
}
}
}
}

您还需要处理图像尺寸不是 3 的倍数的情况。

关于c++ - 循环彻底改变数组元素的 3x3 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19806849/

25 4 0
文章推荐: php - 基于数据库的多任务甘特图
文章推荐: jquery - 重叠
文章推荐: CSS 未加载
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com