CS50 Pset 4模糊| 对二进制表达式无效的操作数

达伦·达内尔

目前正在为CS50的Pset4进行模糊功能

这是很多文字,可能不是最理想的处理方式,但我现在并不担心。

void blur(int height, int width, RGBTRIPLE image[height][width])
{
    
    // Set blur as a RGBTRIPLE 
    RGBTRIPLE blur[1][1];
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            // Check for corner or edge
            if (i == 0 && j == 0) // If top left corner
            {
                blur[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue) / 4;
                blur[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen) / 4;
                blur[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j + 1].rgbtRed + image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed) / 4;
            }
            else if (i == 0 && j == (width - 1)) // If top right corner
            {
                blur[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j - 1].rgbtBlue) / 4;
                blur[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j - 1].rgbtGreen) / 4;
                blur[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i - 1][j - 1].rgbtRed) / 4;
            }
            else if (i == (height - 1) && j == 0) // If bottom left corner
            {
                blur[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 4;
                blur[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 4;
                blur[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j + 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 4;
            }
            else if (i == (height - 1) && j == (width - 1)) // If bottom right corner
            {
                blur[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j - 1].rgbtBlue) / 4;
                blur[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j - 1].rgbtGreen) / 4;
                blur[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j - 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j - 1].rgbtRed) / 4;
            }
            else if (i == 0) // If top edge
            {
                blur[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i][j + 1].rgbtBlue + image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 6;
                blur[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i][j + 1].rgbtGreen + image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 6;
                blur[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j - 1].rgbtRed + image[i][j + 1].rgbtRed + image[i + 1][j - 1].rgbtRed + image[i + 1][j] + image[i + 1][j + 1]) / 6;
            }
            else if (j == 0) // If left edge
            {
                blur[i][j].rgbtBlue = (image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue) / 6;
                blur[i][j].rgbtGreen = (image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen) / 6;
                blur[i][j].rgbtRed = (image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed + image[i - 1][j] + image[i - 1][j + 1]) / 6;
            }
            else if (i == (height - 1)) // If bottom edge
            {
                blur[i][j].rgbtBlue = (image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue + image[i + 1][j - 1].rgbtBlue + image[i][j + 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue) / 6;
                blur[i][j].rgbtGreen = (image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen + image[i + 1][j - 1].rgbtGreen + image[i][j + 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen) / 6;
                blur[i][j].rgbtRed = (image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed + image[i + 1][j - 1].rgbtRed + image[i][j + 1].rgbtRed + image[i][j] + image[i][j + 1]) / 6;
            }
            else if (j == (width - 1)) // If right edge
            {
                blur[i][j].rgbtBlue = (image[i + 1][j].rgbtBlue + image[i + 1][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j - 1].rgbtBlue) / 6;
                blur[i][j].rgbtGreen = (image[i + 1][j].rgbtGreen + image[i + 1][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j - 1].rgbtGreen) / 6;
                blur[i][j].rgbtRed = (image[i + 1][j].rgbtRed + image[i + 1][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j - 1].rgbtRed + image[i - 1][j] + image[i - 1][j - 1]) / 6;
            }
            else
            {
            // Calculate blur value for each RGB
            blur[i][j].rgbtBlue = (image[i - 1][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue +
            image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue + 
            image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 9;
            
            blur[i][j].rgbtGreen = (image[i - 1][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen +
            image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen + 
            image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 9;
            
            blur[i][j].rgbtRed = (image[i - 1][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed +
            image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed + 
            image[i + 1][j - 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 9;
            
            // Change each RGB value of pixel to blur value
            image[i][j].rgbtBlue = blur[i][j].rgbtBlue;
            image[i][j].rgbtGreen = blur[i][j].rgbtGreen;
            image[i][j].rgbtRed = blur[i][j].rgbtRed;
            }
        }
    }
    return;
}

当我编译我得到这个:

**helpers.c:104:141: error: invalid operands to binary
      expression ('int' and 'RGBTRIPLE')
  ...image[i + 1][j].rgbtRed + image[i + 1][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j - 1].rgbtRed + image[i - 1][j]...
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~**

当我检查边缘时,它仅显示rgbtRed

我很困惑,因为如果我摆脱了检查边缘的语句,它可以很好地编译。即使是那些检查角​​落的也可以正常工作。

如果你们知道发生了什么事,请帮助我。谢谢!

Sankeeth Ganeswaran
...image[i][j + 1].rgbtRed + image[i][j] + image[i][j + 1]) / 6;

我相信您忘了.rgbtRed在4个边缘检查的最后几行中放入

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CS50过滤器“模糊” pset4

来自分类Dev

CS50 Pset 4-滤镜-Helpers.c-模糊

来自分类Dev

CS50 PSet4-模糊滤镜,我正在获得黑色图像作为输出

来自分类Dev

CS50 pset4中的模糊功能无法完全正常工作

来自分类Dev

PSET 4恢复分段故障CS50

来自分类Dev

CS50(Pset4)滤镜:边缘

来自分类Dev

CS50 pset 4 //棕褐色过滤器

来自分类Dev

CS50 Pset4恢复:正确恢复049.jpg,恢复的图像不匹配

来自分类Dev

cs50 pset4 recovery.c需要咨询

来自分类Dev

CS50 PSet 1贪婪

来自分类Dev

尝试在CS50中的PSET4的图像上实现框模糊时,为什么我的RGB值会略有偏离?

来自分类Dev

CS50 Pset4边缘编码-类型'RGBTRIPLE [width]'的索引601错误超出范围

来自分类Dev

cs50 pset2 caesar ---验证密钥

来自分类Dev

Tideman中的投票功能(CS50的pset 3)

来自分类Dev

CS50 pset5拼写怪异的bug

来自分类Dev

CS50 Pset 1现金发行

来自分类Dev

cs50 pset 1 Cash仅打印出零

来自分类Dev

CS50 pset1贪婪不起作用

来自分类Dev

cs50缩写pset2意外错误

来自分类Dev

Vigenere cs50 Pset2 末尾的额外字符

来自分类Dev

CS50第4周模糊滤镜,图像模糊,但check50值错误

来自分类Dev

NSInteger乘法:对二进制表达式无效的操作数

来自分类Dev

二进制表达式的无效操作数(“ RadioDevice”和“ const RadioDevice”)

来自分类Dev

错误:对二进制表达式无效的操作数(“ float”和“ float”)

来自分类Dev

无效的二进制表达式操作数(Int和NSNumber *)

来自分类Dev

如何修复“对二进制表达式无效的操作数”错误?

来自分类Dev

C ++-二进制表达式的无效操作数

来自分类Dev

“对二进制表达式无效的操作数”错误

来自分类Dev

使用std :: sort时“二进制表达式的无效操作数”

Related 相关文章

热门标签

归档