C语言 计算RGB颜色的强度

rdlzhqv9  于 2023-04-05  发布在  其他
关注(0)|答案(2)|浏览(118)

我想问一下我如何计算RGB颜色强度的变量y。
RGB_Trypelstruct中的这些r,g,B字母代表数组rot,gelb,gruen,韦斯,施瓦茨的每个数组元素。所以我需要在这里将这些r,g,b数组元素与y变量中显示的数字相乘。
如果能帮上忙我会很高兴的。

#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct RGB_Trypel
    {
        
    unsigned char r, g, b; // speichert Werte nur bis 255 und positive Werte

    };



int main(void)
{
    
    struct RGB_Trypel rot = { 255,0,0 }, gelb = { 255,255,0 }, gruen = { 0,255,0 };

    const  struct RGB_Trypel weiss = { 255,255,255 };
    const  struct RGB_Trypel schwarz = { 0,0,0 };

    struct RGB_Trypel fafeld[5] = { rot, gelb, gruen, weiss, schwarz };
    int n = 5;
    
    unsigned char intensiteat(struct RGB_Trypel t);
    {
        int = y;
        

        y = 0.299 * r + 0.587 * g + 0.114 * b;
    }
    

    for (int i = 0; i < n; i++)
    {

        printf("(%3d,%3d,%3d): \t intensiteat(%d) \n",fafeld[i].r, fafeld[i].g, fafeld[i].b, intensiteat(fafeld[i]);

    }

    return 0;
}

我真的不知道如何将我的结构数组元素放入函数中,并让它乘以我的y变量中的数字。

ryoqjall

ryoqjall1#

你最大的问题是

unsigned char intensiteat(struct RGB_Trypel t);
{
    int = y;
    

    y = 0.299 * r + 0.587 * g + 0.114 * b;
}

看起来像是试图在另一个函数中定义一个函数。这不会起作用。将它移动到main之前。像这样:

unsigned char intensiteat(struct RGB_Trypel t)
{
    int = y;
    

    y = 0.299 * r + 0.587 * g + 0.114 * b;
}

 int main(void)
 {

第二,要在该函数中引用结构体的字段,请执行以下操作:

unsigned char intensiteat(struct RGB_Trypel t)
{
    int = y;
    

    y = 0.299 * t.r + 0.587 * t.g + 0.114 * t.bb;
}

你有多个其他错误,但这将让你开始
顺便说一句,你错过了前面定义的_。应该是:

#define _CRT_SECURE_NO_WARNINGS
icomxhvb

icomxhvb2#

我可能需要再问你一次,如果你可以看看它,因为现在我没有得到任何数字,然后我编译它。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct RGB_Trypel
{
    
unsigned char r, g, b; // speichert Werte nur bis 255 und positive Werte

};

unsigned char intensiteat(struct RGB_Trypel t)
{

    double y = 0.299 * t.r + 0.587 * t.g + 0.114 * t.b;

    if (y > 255)

    return 255;
    return (unsigned char)round(y);

}

int main(void)

{

struct RGB_Trypel rot = { 255,0,0 }, gelb = { 255,255,0 }, gruen = { 0,255,0 };

const  struct RGB_Trypel weiss = { 255,255,255 };
const  struct RGB_Trypel schwarz = { 0,0,0 };

struct RGB_Trypel fafeld[5] = { rot, gelb, gruen, weiss, schwarz };
int n = 5;




for (int i = 0; i < n; i++)
{

    printf( "(%3d,%3d,%3d): \t intensiteat (%.4lf) \n"  ,fafeld[i].r, fafeld[i].g, fafeld[i].b, intensiteat(fafeld[i]) );

}

return 0;
}

相关问题