打印
[技术问答]

画板时rgb接口的R和B互换了,软件上如何调整过来?

[复制链接]
1526|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
画板时觉得线有点拧,就把R和B整组互换了,就是R0<=>B0 ......  R7<=>B7。
现在接上lcd后,看到的是红色和蓝色互换的,请问,该如何修正?
在uboot目录的driver/video目录下找到了nuc970fb.c这个文件,但是没看懂是如何控制RGB数据

使用特权

评论回复
沙发
jekey| | 2021-2-19 22:40 | 只看该作者
相应颜色的数据交换位置就可以了。

使用特权

评论回复
板凳
正圆椭圆| | 2021-2-19 23:53 | 只看该作者
接口调换一下

使用特权

评论回复
地板
cepoly| | 2021-2-20 14:49 | 只看该作者
软件GPIO管脚定义,目测R和B也整组互换就可以了吧

使用特权

评论回复
5
drer| | 2021-3-3 18:18 | 只看该作者
飞线处理一下

使用特权

评论回复
6
gwsan| | 2021-3-3 18:20 | 只看该作者
飞线的话会不会产生干扰

使用特权

评论回复
7
kxsi| | 2021-3-3 18:22 | 只看该作者
在软件上把两个数据对调一下

使用特权

评论回复
8
nawu| | 2021-3-3 18:22 | 只看该作者
软件处理最好了

使用特权

评论回复
9
qcliu| | 2021-3-3 18:24 | 只看该作者
怎么方便怎么处理吧 看情况

使用特权

评论回复
10
yangjiaxu| | 2021-3-3 22:30 | 只看该作者
建议还是换回来吧,比如你做一张图片,颜色都是反的才可以在RGB上正常显示呢 麻烦

使用特权

评论回复
11
jcky001| | 2021-4-14 14:43 | 只看该作者

NUC970没有软件的方式来交换

使用特权

评论回复
12
BA20MW| | 2021-4-15 13:33 | 只看该作者
建议重Layout,RGB严格按开发板原理图对应。

使用特权

评论回复
13
twjiang| | 2021-4-16 06:10 | 只看该作者


上图中第一张为正常显示的图片,第二张为R与B互换后的显示效果,第三张是仿射变换(Affine Transformation)后的效果。
上述代码在 N9H series(N9H20/N9H26/N9H30)上运行测试通过,可应用到 NUC972上。


#define RGB565(r,g,b) (((r & 0x1f) << 11) | ((g & 0x3f) << 5) | (b & 0x1f))

typedef struct tagMEMORYBITMAP
{
    int                width;
    int                height;
    int                bpp;
    U16*    image;
} MEMORYBITMAP, *PMEMORYBITMAP;



PMEMORYBITMAP RBSwap(GUI_BITMAP *image)
{
    PMEMORYBITMAP pMemImage = (PMEMORYBITMAP)malloc(sizeof(MEMORYBITMAP));

    pMemImage->width = image->XSize;
    pMemImage->height = image->YSize;
    pMemImage->bpp = 16;
    pMemImage->image = (U16*)malloc(sizeof(U16) * (pMemImage->width) * (pMemImage->height));

    U16* src = (U16*)image->pData;

    for (int i = 0; i < pMemImage->height; i++) // row
    {
        for (int j = 0; j < pMemImage->width; j++) // col
        {
            U8 r = GETR(src[j + i * image->XSize]);
            U8 g = GETG(src[j + i * image->XSize]);
            U8 b = GETB(src[j + i * image->XSize]);

            pMemImage->image[j + i * pMemImage->width] = RGB565(b, g, r);
        }
    }

    return pMemImage;
}



使用特权

评论回复
14
huquanz711| | 2021-4-16 07:39 | 只看该作者
数据换位,比较麻烦,还是改板吧。

使用特权

评论回复
15
twjiang| | 2021-4-16 09:57 | 只看该作者
#define GETR(color16) ((color16 & 0xf800) >> 11)
#define GETG(color16) ((color16 & 0x07e0) >> 5)
#define GETB(color16) ((color16 & 0x001f))

贴了这么一大堆代码,是不是很别扭呀,所以啊还是建议硬件改过来,不然的话,在底层软件都要那么“疙瘩”地转一下,效能不高。

使用特权

评论回复
16
两只袜子| | 2021-4-16 16:15 | 只看该作者

飞线处理一下

使用特权

评论回复
17
piteqiu| | 2021-4-17 12:10 | 只看该作者
软件如果定义规范的话,底层的宏定义变一下就好了,因为这个不涉及到硬件的外设驱动。

使用特权

评论回复
18
springvirus| | 2021-4-20 08:37 | 只看该作者
觉得还是重画板子吧,不然软件将来维护也是别扭

使用特权

评论回复
19
天意无罪| | 2021-4-20 09:15 | 只看该作者
软件上可以处理,但是很麻烦,浪费时间,建议还是硬件上改回来吧、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

418

主题

2023

帖子

1

粉丝