use*_*615 6 android opengl-es opencv4android
在我的应用程序中,我正在做一些图像像素操作.我的代码基于这个例子.
我所做的唯一改变是将其更改FRAGMENT_SHADER为灰度,它看起来像这样:
private static final String FRAGMENT_SHADER =
"#extension GL_OES_EGL_image_external : require\n" +
"precision mediump float;\n" + // highp here doesn't seem to matter
"varying vec2 vTextureCoord;\n" +
"uniform samplerExternalOES sTexture;\n" +
"void main() {\n" +
" vec4 tc = texture2D(sTexture, vTextureCoord);\n" +
" gl_FragColor.r = tc.r * 0.3 + tc.g * 0.59 + tc.b * 0.11;\n" +
" gl_FragColor.g = tc.r * 0.3 + tc.g * 0.59 + tc.b * 0.11;\n" +
" gl_FragColor.b = tc.r * 0.3 + tc.g * 0.59 + tc.b * 0.11;\n" +
"}\n";
Run Code Online (Sandbox Code Playgroud)
问题:我从Galaxy s7设备上录制了一段视频,录制后我拍摄了录制的视频,我正在从2个不同设备(Galaxy S7和Galaxy s3)中读取第一帧,我发现像素值绝对是这些设备之间有所不同
有人知道为什么会这样吗?我能做些什么来解决这个问题,因为我的算法由于这种差异而失败了?
更新:
这是我得到的差异的例子.
Gaaxy S3: 矩阵213,214,212,214,216,214,213,212,212,212,213,214,214,214,213,213,214,214,214,214,212,213的一部分,212,213,212,214,214,212,212,210,211,210,211,210,211,211,214,211,214,213,213,214,214,216,216,216,215 ,215,216,212,213,213,214,213,213,212,211,209,209,207,208,208,210,211,209,207,209,210,217,219,216,209 ,209,210,210,210,211,209,207,205,205,206,210,210,220,211,202,210,211,206,206,209,210,211,213,219,222 ,216,217,217
非零像素数:1632816
所有像素的总和:3.1834445E8
Galaxy S7: Matrix的相同部分,如Galaxy 3 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164 ,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164 ,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164 ,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164 ,164,164,164,164,164
非零像素数:1063680
所有像素的总和:1.6593408E8
UPDATE2:
我发现收到的图像绝对毁了,但视频录制得很好.这是Galaxy S3的好照片:

我根本不知道这里发生了什么,但我知道所有Marshmallow设备的最后一张图片都是一样的(Galaxy S6,S7和华为)
好吧,经过一周的努力寻找解决方案,找到了!
正如我所说,我基于 bigflake 示例,在这个示例中,有一个反转框架的选项,并且在示例中完成了操作。
通过将 invert 更改为 false,问题得到解决。
如果有人能向我解释框架反转的原因,以及为什么决定默认将其设置为“true”,我将非常感激。
感谢您的帮助!
如果还不够清楚,这是我所做的更改:
outputSurface.drawImage(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |