Convertir Android caméra 2 api YUV_420_888 RVB
Je suis en train d'écrire une application qui prend l'alimentation de la caméra, la convertit en rvb, afin de faire un peu de traitement.
Il fonctionne très bien sur le vieil appareil photo de mise en œuvre qui utilise NV21 format Yuv.
La question que je vais avoir le nouveau format Yuv, YUV_420_888. L'image n'est plus convertis correctement RVB dans la nouvelle Caméra 2 Api qui envoie YUV_420_888 format yuv au lieu de NV21 (YUV_420_SP) format.
Quelqu'un peut-il me dire comment dois-je convertir YUV_420_888 RVB?
Grâce
double possible de la Conversion YUV- > RGB(traitement d'Image)->YUV pendant onPreviewFrame dans android?
C'est pour les plus âgés de la caméra mise en œuvre, qui ne m'aide pas. Je vous remercie bien.
Quelqu'un a converti YUV_420_888 à NV21 ( YUV_420_SP)?
avez-vous résolu problème ci-dessus.
Ma solution prend les médias.l'image en entrée et renvoie l'image Bitmap stackoverflow.com/a/35994288/5148048).
C'est pour les plus âgés de la caméra mise en œuvre, qui ne m'aide pas. Je vous remercie bien.
Quelqu'un a converti YUV_420_888 à NV21 ( YUV_420_SP)?
avez-vous résolu problème ci-dessus.
Ma solution prend les médias.l'image en entrée et renvoie l'image Bitmap stackoverflow.com/a/35994288/5148048).
OriginalL'auteur Constantin Georgiu | 2015-05-28
Vous devez vous connecter pour publier un commentaire.
Dans mon approche, j'utilise OpenCV Mat et le script à partir de
https://gist.github.com/camdenfullmer/dfd83dfb0973663a7974
Tout d'abord, vous convertissez votre YUV_420_888 Image à Tapis avec le code dans le lien ci-dessus.
*mImage est mon Image de l'objet qui je ImageReader.OnImageAvailableListener
Nous avons 1 canal YUV Mat. Définir de nouveaux Tapis pour BGR(pas de RVB encore) image:
Je viens de commencer l'apprentissage d'OpenCV donc probablement cela n'a pas à être 4 canaux Mat et au lieu de cela pourrait être 3-canal, mais cela fonctionne pour moi.
Maintenant, j'utilise convertir la couleur de la méthode pour changer mon yuv Tapis de bgr Mat.
Maintenant, nous pouvons faire tout le traitement d'image comme la conclusion des contours, des couleurs, des cercles, etc. Pour imprimer l'image sur l'écran, nous avons besoin de le convertir en bitmap:
J'ai tous mes de traitement de l'image dans le sujet séparé, afin de régler mon ImageView j'ai besoin de le faire sur le thread de l'INTERFACE utilisateur.
OriginalL'auteur
La caméra 2 YUV_420_888 RVB Mat(opencv) en Java
Essayez d'utiliser des thread d'arrière-plan qui peut entraîner un résultat plus rapide.
OriginalL'auteur
Avez-vous essayé d'utiliser ce script? C'est une réponse posté par yydcdut sur cette question
https://github.com/pinguo-yuyidong/Camera2/blob/master/camera2/src/main/rs/yuv2rgb.rs
OriginalL'auteur
Environ 10 fois plus rapide que la mention "des imageToMat"-la Fonction ci-dessus est ce code:
OriginalL'auteur
Donc, j'ai rencontré exactement le même problème, où j'ai eu un code qui a pris l'ancien YUV_420_SP format byte[] les données du OnPreviewFrame() et convertie en RVB.
Ils clé ici est que les "anciens" des données dans le byte[] AAAAAA...CrCbCrCbCrCb, et la "nouvelle" des données de la Caméra 2 API est divisé en 3 plans: 0=O, 1=Cb, 2=Cr., d'où vous pouvez obtenir chaque byte[]s. Donc, tout ce que vous devez faire est de réorganiser les nouvelles données comme un tableau unique qui correspond à l'ancien format, que vous pouvez transmettre à votre toRGB() fonctions:
..et maintenant des données[] est formaté comme l'ancien YUV_420_SP.
(espérons que cela aide quelqu'un, malgré les années passées..)
OriginalL'auteur