- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 opengl 着色器将 yuv 转换为 rgb。但它只显示绿色和粉红色。我正在使用 ffmpeg 解码电影。我是这方面的初学者,所以不知道如何解决。 ffmpeg 给我三个 yuv 缓冲区。我直接将这些缓冲区分配给三个纹理。
这是我正在使用的着色器。
static const char* VERTEX_SHADER =
"attribute vec4 vPosition; \n"
"attribute vec2 a_texCoord; \n"
"varying vec2 tc; \n"
"uniform mat4 u_mvpMat; \n"
"void main() \n"
"{ \n"
" gl_Position = u_mvpMat * vPosition; \n"
" tc = a_texCoord; \n"
"} \n";
static const char* YUV_FRAG_SHADER =
"#ifdef GL_ES \n"
"precision highp float; \n"
"#endif \n"
"varying vec2 tc; \n"
"uniform sampler2D TextureY; \n"
"uniform sampler2D TextureU; \n"
"uniform sampler2D TextureV; \n"
"uniform float imageWidth; \n"
"uniform float imageHeight; \n"
"void main(void) \n"
"{ \n"
"float nx, ny; \n"
"vec3 yuv; \n"
"vec3 rgb; \n"
"nx = tc.x; \n"
"ny = tc.y; \n"
"yuv.x = texture2D(TextureY, tc).r; \n"
"yuv.y = texture2D(TextureU, vec2(nx/2.0, ny/2.0)).r - 0.5; \n"
"yuv.z = texture2D(TextureV, vec2(nx/2.0, ny/2.0)).r - 0.5; \n"
// Using BT.709 which is the standard for HDTV
"rgb = mat3( 1, 1, 1, \n"
"0, -0.18732, 1.8556, \n"
"1.57481, -0.46813, 0)*yuv;\n"
// BT.601, which is the standard for SDTV is provided as a reference
//"rgb = mat3( 1, 1, 1, \n"
// "0, -0.34413, 1.772, \n"
// "1.402, -0.71414, 0) * yuv; \n"
"gl_FragColor = vec4(rgb, 1.0); \n"
"} \n";
输出:
我做错了什么?这个你能帮我吗。
谢谢。
更新:
在调试ffmpeg解码时,我发现ffmpeg解码器给出了PIX_FMT_YUV420P输出格式。我是否必须进行一些调整才能获得正确的图像颜色?
最佳答案
我不确定这个转换:
"rgb = mat3( 1, 1, 1, \n"
"0, -0.18732, 1.8556, \n"
"1.57481, -0.46813, 0)*yuv;\n"
刷新我对 GLSL 中矩阵 * 向量运算的内存 using this page as reference ,我认为你要么需要转置系数矩阵,要么将 yuv 移到操作的前面,即 yuv * mat3(...)
。执行 mat3(...) * yuv
的操作意味着:
r = y * 1 + u * 1 + v * 1
g = y * 0 + u * -0.18732 + v * 1.8556
b = y * 1.57481 + u * -0.46813 + v * 0
而且这些转换是非常不正确的。
作为另一个引用,这里有一个小型的、完整的示例 GLSL 着色器程序,它可以转换 YUV -> RGB,这可能具有一定的指导意义:http://www.fourcc.org/source/YUV420P-OpenGL-GLSLang.c
关于android - opengl es yuv 到 rgb 转换仅显示绿色和粉红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513743/
在此处下载源代码:http://www.eyeClaxton.com/download/delphi/ColorSwap.zip 是的,我想将“主要是蓝色”的内容转换为“主要是绿色”的内容。 我想获取
我正在处理红色、绿色、蓝色或黑色的小图像(想想 4 色卡组中的卡片等级)。什么是确定图像颜色的快速算法? 有关输入的示例集,请参阅 here ,除了图像可以缩放等,所以它们不会那么清晰。 最佳答案 这
我正在为我的 HTML 表单创建一个简单的 JS 验证。验证检查字段是否为空,在某些情况下检查两者,如果它们为空并输入 !numbers。此检查效果很好,但我还试图实现的是,如果 JS 检测到无效输入
我是 Mac OSx/Cocoa 开发新手。在创建我的第一个应用程序期间,我遇到了一些事情,其中之一就是用于缩放目的的绿色 + 按钮的问题。 我想知道是否可以动态设置应用程序窗口的缩放按钮的行为?
我正在尝试通过command line构建apk gradlew assemleDebug 但出现以下错误: Could not find tools.jar. Please check that C
我有这段代码可以生成一个可点击的框,只要单击鼠标,它就会通过在绿色阴影之间循环来改变颜色,从黑色 --> 绿色 --> 白色。我需要同样的事情发生,除了盒子不是逐渐变亮,而是从白色开始逐渐变暗。 va
我正在构建一个 ruby on rails 应用程序,并尝试启动我的 TDD。我在测试环境下安装了以下 gem。 turn <0.8.3 rspec-rails capybara guard-rs
我的程序读取形状列表,如果面积 > 1000 并且颜色字符串与绿色匹配,则打印形状。 下面的示例数据: 矩形,宽度,高度,颜色 - 圆、半径、颜色。 矩形 68.01 77.63 橙色 主类(clas
我有以下代码: from PIL import Image import numpy as np a = np.ones((512, 256, 3)).astype(int)*255 image =
我正在尝试学习 TDD 和单元测试概念,并且我看到了口头禅:“红色、绿色、重构”。我很好奇为什么要在测试通过后重构代码? 这对我来说毫无意义,因为如果测试通过了,那你为什么要弄乱代码?我还看到 TDD
首先,我必须解释一下,我知道如果您的应用程序支持 CallKit 并且用户从应用程序进入后台状态,就会出现这个绿色条,而这些都可以在我的 VOIP 应用程序中完美运行。 但我想实现类似 Whatsap
有没有办法轻松地将给定的十六进制颜色代码分配给更一般的类别(红色、绿色、蓝色、黄色、橙色、粉色、黑色、白色、灰色……)? 比如 #ffcc55 -> 橙色,#f0f0f0 -> 白色,... 编辑:甚
Parameterized Unit Testing当您有 X 单元测试 * Y 配置时非常棒。 我有 3 个单元测试,每个单元测试都必须在 5 个特定情况下运行。 我使用 xUnit.net 的 T
我想实现一个可以按颜色过滤图像的搜索。我的图像模型包含多达 10 个出现在该特定图像中的 UIColors,现在我想要一个过滤器,例如蓝色,绿色,红色,黄色。我如何检查(以指定的容差)该特定图像是否包
我使用的是OpenCV 2.4.1,需要检测视频流是否有任何噪音。噪声,例如如下所示的样本帧: 一种检测这些类型的噪声的简单,快捷的方法可能是。问题是这种噪声可能是间歇性的,不可预测的并且需要检测 最
这个问题在这里已经有了答案: UIColor colorWithRed:green:blue:alpha: always returns white unless one argument is
我希望使用非常明亮的金属色或荧光色来指定我的文本和 div 颜色。我还没有找到显示这些的任何标准。这些是否存在于颜色规范中,或者您能否向我推荐任何接近的尝试。谢谢。 最佳答案 Here's一个很好的荧
Matlab 将图像存储为 3 维数组。前两个维度对应上图轴上的数字。每个像素由图像三维中的三个条目表示。三层中的每一层都代表像素阵列中红色、绿色和蓝色的强度。我们可以通过以下方式提取出图像中独立的红
我有一个图像(列表列表),我想返回整个图像的平均颜色。我尝试使用 zip() 将图像按红、绿、蓝切成 3 部分,但是当我运行代码时: def average(image): """Return
为什么我在 SSL 锁定标志前看到一个带有 Twitter Inc 的绿色方 block ,但对于 Facebook 来说只是一个简单的锁定标志? 这些证书有什么区别?还是有其他原因? 最佳答案 绿色
我是一名优秀的程序员,十分优秀!