目前通过调整设置 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设置值也是无效的。
不知道理解的对不对,麻烦大佬们帮忙解答一下,看看如何才能实现插入的字符背景如何更改透明度