TI中文支持网
TI专业的中文技术问题搜集分享网站

关于 DM8168 在视频图像指定位置混合字符。 如何设置背景透明度及颜色的问题

目前通过调整设置 AlgLink_OsdChWinParams * chWinPrm 的相关参数 ,可以实现在视频图像指定位置进行指定字符或者动态时间显示。

但想设置显示字符 背景颜色的透明度和 字符的颜色。

尝试更改1  : 修改 chWinPrm->colorKey 的参数 后验证:无效果 

尝试更改2 :  修改 UInt32 padingColor[3] 的参数 后验证:无效果

尝试更改3 :  修改 chWinPrm->winPrm[*].globalAlpha 的参数 后验证:插入的字符跟背景 一块变透明,并没有达到字符透明度不变的情况下单独将背景透明化

实验效果如下图:

请问大佬们如何才能达到将字符(ABCD)颜色可调,字符的背面可以透明化(不遮挡视频)

Shine:

chWinPrm->winPrm[i].transperencyEnable设成1了吗?请参考下面的帖子。
e2echina.ti.com/…/345289

,

hongqiang zheng:

非常感谢您的解答。

chWinPrm->winPrm[i].transperencyEnable已经设成1。

由您推荐的参考帖子可知: colorkey设置的YUV的值,就代表了要完全透明的颜色

我理解要想把黑色背景透明就将colorkey修改为对应黑色的值

RGB 黑色为 0 0 0  按照公式:

Y =  0.257 * R + 0.504 * G + 0.098 * B + 16;

U = -0.148 * R – 0.291 * G + 0.439 * B + 128;

V =  0.439 * R – 0.368 * G – 0.071 * B + 128;

转换成YUV结果为:

chWinPrm->colorKey[0] = 0x10;    

chWinPrm->colorKey[1] = 0x80;      

chWinPrm->colorKey[2] = 0x80;      

(Demo_text_draw 中使用的padingColor参数暂定为0x0, 0x80, 0x80 ;格式ascii_422i_1078_28)

实验结果还是没能实现黑色背景透明化

,

Chris Meng:

你好,

能否尝试使用的OSD的图片也为YUV格式,保证背景黑色的YUV值和color key里设定的值完全一样?

,

hongqiang zheng:

非常感谢您的解答

位图格式使用的是 SYSTEM_DF_YUV422I_YUYV

衬垫颜色padingColor[3] = { 0x10, 0x80, 0x80 }

chWinPrm->colorKey[0] = 0x10;  chWinPrm->colorKey[1] = 0x80;  chWinPrm->colorKey[2] = 0x80;

transperencyEnable = 1;

修改后没有效果

麻烦问一下还有哪里需要注意的吗

,

Chris Meng:

你好,

请问你使用的是DVRRDK4.01么?

,

hongqiang zheng:

您好
使用的是 DVRRDK-04.01.00.02

,

hongqiang zheng:

Demo_text_draw_osd_by_index()函数插入的字符YUV是由 ascii_422i_1078_28_YuvData来找到的。

chWinPrm->colorKey[] 只能改变插入的YUV图片,不能改变由Demo_text_draw_osd_by_index函数查找ascii_422i_1078_28_YuvData字库生成的字符。

在实验得知

在 padPix = lineOffset – pixPerLine;中

lineOffset 与 pixPerLine值始终相等

//pending padingColor for(j = 0; j < padPix;j+=scaleX) { *temp++ = padingColor[0]; *temp++ = padingColor[1]; *temp++ = padingColor[0]; *temp++ = padingColor[2]; }

for循环始终不能执行,padingColor设置值也是无效的。

不知道理解的对不对,麻烦大佬们帮忙解答一下,看看如何才能实现插入的字符背景如何更改透明度

赞(0)
未经允许不得转载:TI中文支持网 » 关于 DM8168 在视频图像指定位置混合字符。 如何设置背景透明度及颜色的问题
分享到: 更多 (0)