J'utilise la couleur intrinsèque de Renderscript pour appliquer un filtre sépia, mais il rend l'image entière verte, plutôt que de lui donner cette teinte jaunâtre (sépia). La réponse de ce thread est ma base actuelle pour les tests (http://answers.opencv.org/question/99510/opencv4android-31-mat-to-allocation-renderscript/). Un bitmap est transformé en un OpenCV Mat puis dans une allocation et passé sur renderScript où la valeur intrinsèque qui suit fait son travail:Application de Sépia via Renderscript ScriptIntrinsicColorMatrix transforme l'image en nuances de vert
Element element = Element.RGBA_8888(mRS);
ScriptIntrinsicColorMatrix colorMatrix = ScriptIntrinsicColorMatrix.create(mRS, element);
final Matrix4f mSepia = new Matrix4f(new float[]{
0.189f, 0.769f, 0.393f, 0f,
0.168f, 0.686f, 0.349f, 0f,
0.131f, 0.534f, 0.272f, 0f,
0.000f, 0.000f, 0.000f, 1f});
colorMatrix.setColorMatrix(mSepia);
colorMatrix.forEach(inputAllocation, outputAllocation);
j'exclure une erreur dans ce complexe Bitmap à Mat processus d'allocation, parce que quand j'ai essayé de exécuter l'intrinsèque sur un bitmap directement il ya quelques semaines, j'ai eu exactement le même problème de teinte verte. Je suppose que ce devrait être un vecteur (R, G, B, A) qui est ensuite multiplié par la matrice que j'ai donnée, mais quelque chose de louche doit se produire en cours de route.
Est-ce que quelqu'un sait ce qui se passe ici?
est la source d'une Bitmap à partir d'un fichier ou d'un appareil photo? Si la caméra ne doit pas les données sont au format YUV? –
Il provient d'un bitmap d'un fichier. Quand je l'ai fait il y a quelques semaines, j'ai transformé OpenCV Mat rgba en Bitmap argb_8888 et j'ai fini par avoir le même problème. – AllBecomesGood
Mise à jour: Je reçois la même teinte verte bizarre lors de la diffusion directe à partir de Camerafeed et en laissant Renderscript effectuer les conversions (YUV à RVB, puis appliquer colormatrix et convertir en bitmap pour afficher à l'écran). Je me méfie des bitmaps impliqués, peut-être la façon dont il enregistre les pixels est différente et provoque l'étrangeté. – AllBecomesGood