检测现场安卓相机预览的颜色编码。

8
我希望能够在摄像头预览时检测图像(实时流图像)的颜色代码。我想开发一个样例Android应用程序,其功能类似于ColorGrab Android应用程序。请参见附加的屏幕截图。
如何制作演示程序应用程序,通过指向相机捕获和识别颜色,并显示该颜色的十六进制代码。
任何帮助都将不胜感激。感谢您的时间。

enter image description here

3个回答

2

https://play.google.com/store/apps/details?id=com.raj.colorwalls

看一下这个应用程序的URL,它应该会给你一些想法。它使用了这段代码:
int frameHeight1 = camera.getParameters().getPreviewSize().height;
    int frameWidth1 = camera.getParameters().getPreviewSize().width;
    int rgb1[] = new int[frameWidth * frameHeight];
    decodeYUV420SP(rgb1, data, frameWidth, frameHeight);
    Bitmap bmp1 = Bitmap.createBitmap(rgb, frameWidth1, frameHeight1, Config.ARGB_8888);
    int pixel = bmp1.getPixel( x,y );
    int redValue1 = Color.red(pixel);
    int blueValue1 = Color.blue(pixel);
    int greenValue1 = Color.green(pixel);
    int thiscolor1 = Color.rgb(redValue1, greenValue1, blueValue1);

enter image description here


这段代码能在Android v4.2.2 API Level: 15上运行吗?还是只能在Lollipop及以上版本上运行? - fWd82
1
是的,它可以在Android L和Android M上运行。您可以通过安装应用程序来测试其他版本: https://play.google.com/store/apps/details?id=com.raj.colorwalls - raj

0

这应该是你的起点

从触摸的图像像素获取颜色

targetImage.setOnTouchListener(new ImageView.OnTouchListener(){     
@Override   
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub       
    int x=0;
    int y=0;
    textView.setText("Touch coordinates : " +       
    String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
    ImageView imageView = ((ImageView)v);
    Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
    int pixel = bitmap.getPixel(x,y);
    int redValue = Color.red(pixel);
    int blueValue = Color.blue(pixel);
    int greenValue = Color.green(pixel);


    return true;    }     
});

您将获得RGB颜色代码。

如何在Android中获取像素颜色?获取


0
你应该尝试这个,其中x和y是像素的位置。

    int frameHeight = camera.getParameters().getPreviewSize().height;
    int frameWidth = camera.getParameters().getPreviewSize().width;
    int rgb[] = new int[frameWidth * frameHeight];
    decodeYUV420SP(rgb, data, frameWidth, frameHeight);
    Bitmap bmp = Bitmap.createBitmap(rgb, frameWidth, frameHeight, Config.ARGB_8888);
    int pixel = bmp.getPixel( x,y );
    int redValue = Color.red(pixel);
    int blueValue = Color.blue(pixel);
    int greenValue = Color.green(pixel);
    int thiscolor = Color.rgb(redValue, greenValue, blueValue);

1
在“decodeYUV420SP(rgb,data,frameWidth,frameHeight)”中,您在哪里设置或获取“data”值? - Machine Tribe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接