Algum possibilidade de mostrar como ficou o código no android studio?
-- Abs
El jueves, 3 de octubre de 2013, 13:58:53 (UTC-3), Carlos Pelegrin escribió:
El jueves, 3 de octubre de 2013, 13:58:53 (UTC-3), Carlos Pelegrin escribió:
O formato NV21 pega as cores no formato YCrCb (componentes b e r invertidos)Sendo assim o código que funcionou foi esse:private PreviewCallback p = new PreviewCallback() {@Overridepublic void onPreviewFrame(byte[] data, Camera camera) {int frameHeight = camera.getParameters().getPreviewSize().height; int frameWidth = camera.getParameters().getPreviewSize().width; RGB(data,frameWidth,frameHeight); }};E a função RGB:
//Retirado e adaptado de: http://stackoverflow.com/questions/9325861/converting- yuv-rgbimage-processing-yuv- during-onpreviewframe-in- android private void RGB( byte[] data, int imageWidth, int imageHeight){int numPixels = imageWidth*imageHeight;mCamera.setPreviewCallback(null); mCamera.startPreview();for (int y = 0; y < imageHeight; y++) {for (int x = 0; x < imageWidth; x++) {// Get the Y value, stored in the first block of data// The logical "AND 0xff" is needed to deal with the signed issueint Y = data[y*imageWidth + x] & 0xff;// Get U and V values, stored after Y values, one per 2x2 block// of pixels, interleaved. Prepare them as floats with correct range// ready for calculation later.int xby2 = x/2;int yby2 = y/2;float V = (float)(data[numPixels + 2*xby2 + yby2*imageWidth] & 0xff) - 128.0f;float U = (float)(data[numPixels + 2*xby2 + 1 + yby2*imageWidth] & 0xff) - 128.0f;// Do the YUV -> RGB conversionfloat Yf = 1.164f*((float)Y) - 16.0f;int R = (int)(Yf + 1.596f*V);int G = (int)(Yf - 0.813f*V - 0.391f*U);int B = (int)(Yf + 2.018f*U);
// Clip rgb values to 0-255R = R < 0 ? 0 : R > 255 ? 255 : R;G = G < 0 ? 0 : G > 255 ? 255 : G;B = B < 0 ? 0 : B > 255 ? 255 : B;}}A partir daí fiz umas continhas de menos Ex: r-g && r-b , para determinar a cor predominante em cada pixel, incrementei um contator e quem for maior é a cor RGB predominante na imagem.No meu caso basta!:)Obrigado
--
Carlos Eduardo Simões PelegrinEm 3 de outubro de 2013 08:58, Carlos Eduardo <carlosedua...@gmail.com > escreveu:
Ops, o software usa o ImageFormat.NV21 (default android). Eu que estava de "braço curto" aqui!para setar o modo que eu quero de exposição a branco:Camera.Parameters params = mCamera.getParameters(); params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_ FLUORESCENT); mCamera.setParameters(params);Agora está tudo encaminhado, falta apenas converter de hex para RGB.após postarei o código!Att.
--
Carlos Eduardo Simões PelegrinEm 3 de outubro de 2013 08:46, Carlos Eduardo <carlosedua...@gmail.com > escreveu:
Bom dia,Eu estou justamente nesse ponto.Consegui entender que aparentemente o método decodeYUV420SP do exemplo usa codificação inicial ImageFormat.YV12.Parece também que ele converte a cor para ARGB (0xffa97fad) mas o alfa é sempre FF, sendo assim, eliminei esse alfa e tenho a cor em HEX;Vou converter para rgb que é o que preciso.Encontrei um outro problema, agora com a câmera.O método de cor e/ou exposição a luz, não sei qual, ou se os dois estão me atrapalhando.A imagem da câmera fica amarela, atrapalhando na identificação da cor!Estou pesquisando uma forma de setar o modo para fluorescente, que parece identificar melhor.
Um ponto que analisei no Color Grab é que ele parece controlar esses parâmetro para sempre deixar a câmera ajustada conforme a necessidade do software.Isso é possível?Obrigado.
--
Carlos Eduardo Simões PelegrinEm 2 de outubro de 2013 16:48, marcelo yonamine <yonam...@gmail.com> escreveu:De algum modo (desculpe, mas não sei) vc deve converter os valores RGB para Color e mostrar as cores em uma listview
http://stackoverflow.com/questions/17761852/how-to-set- rgb-color-in-android
Em 2 de outubro de 2013 16:04, Carlos Eduardo <carlosedua...@gmail.com > escreveu:
Consegui começar a me achar no código,Consegui implementar o ultimo exemplo do link(pegar os frames), porém ainda não consegui identificar a cor.Att.
--
Carlos Eduardo Simões PelegrinEm 2 de outubro de 2013 15:30, Carlos Eduardo <carlosedua...@gmail.com > escreveu:
Eu tentei incluir esse exemplo no meu código mas n rodou não,Estou me perdendo em meio tantos extends e implements.Tem algum exemplo funcional?O que entendi de câmera:Tenho um objeto Camera e tenho que ter um preview (no meu caso é um framelayout que recebe um objeto de uma classe que extend SurfaceView e implements SurfaceHolder.Callback). Aparentemente no preview eu conseguiria pegar o frame e identificar as cores conforme os pixels?att.
--
Carlos Eduardo Simões Pelegrin2013/10/2 marcelo yonamine <yonam...@gmail.com>SurfaceView e RGB
http://stackoverflow.com/questions/15918180/get-rgb- from-a-surfaceview-displaying- live-camera
--2013/10/2 Carlos Pelegrin <carlosedua...@gmail.com >
Boa tarde pessoal,--Pergunta "simples" mas não sei por onde começar a procurar.Como identificar cores pela câmera?Criei um app que usa câmera usando o exemplo http://developer.android.com/guide/topics/ l e agora queria identificar cores de uma forma parecida com esse app: https://play.google.com/media/camera.htm store/apps/details?id=com. loomatix.colorgrab Alguma sugestão?Obrigado
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
0 comentários:
Postar um comentário