Trong ứng dụng của tôi, tôi đang thực hiện một số thao tác pixel ảnh. Mã của tôi dựa trên ví dụ THIS.OpenGL ES 2 không hoạt động trên Android API23
Sự thay đổi duy nhất mà tôi đã thực hiện là thay đổi FRAGMENT_SHADER
đến một màu xám và nó trông như thế này:
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";
Vấn đề: Tôi đã ghi lại một đoạn video từ điện thoại Galaxy s7, sau khi ghi hình Tôi đã quay video và tôi đã đọc khung hình đầu tiên từ 2 thiết bị khác nhau (Galaxy S7 và Galaxy s3), tôi thấy rằng các giá trị pixel hoàn toàn khác nhau giữa các thiết bị đó.
Có ai đó biết tại sao điều đó xảy ra không? và tôi có thể làm gì để giải quyết vấn đề này, vì thuật toán của tôi không thành công do sự khác biệt này?
Cập nhật:
Đây là ví dụ về các diferences Tôi đã có.
Gaaxy S3: Một phần của ma trận 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
đếm số không pixel: 1632816
Sum của tất cả các điểm ảnh: 3.1834445E8
Galaxy S7: cùng một phần của Matrix như 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
đếm pixel không số không: 1063680
Sum của tất cả các điểm ảnh: 1.6593408E8
Update2:
tôi thấy rằng hình ảnh nhận được hoàn toàn bị hủy hoại, nhưng đoạn video ghi lại tốt. Đây là hình ảnh tốt từ Galaxy S3:
Và đây là hình ảnh tôi đã nhận được từ Galaxy S7 (Same khung #)
Tôi không có ý tưởng ở tất cả những gì đang xảy ra ở đây, nhưng tôi biết rằng hình ảnh cuối cùng là giống nhau cho tất cả các thiết bị Marshmallow (Galaxy S6, S7 và Huawei)
bạn có thể xin hãy giải thích về sự khác biệt giữa các giá trị điểm ảnh giữa 2 thiết bị? Thêm ảnh chụp màn hình cho thấy sự khác biệt cũng sẽ hữu ích. –
Tôi sẽ cập nhật nó, Cảm ơn – user2235615
Ngoài ra, hãy cho chúng tôi biết thêm thông tin về cách bạn ghi lại video? – codetiger