如何从canvas.drawcircle
?
canvas.drawCircle((float)(myMidPoint.x - myEyesDistance/2.0), myMidPoint.y, (float)30.0, myPaint);
int x1=(int) (myMidPoint.x) /2;
int y1=(int)(myMidPoint.y)/2;
// int x2=(int) (myMidPoint.x + myEyesDistance/2.0);
// int y2=(int) myMidPoint.y;
int pixelColor = myBitmap.getPixel(x1,y1);
if(pixelColor == Color.BLACK) {
//The pixel is black
System.out.println("pixel black");
} else {
//The pixel was white
System.out.println("pixel white");
}
答案 0 :(得分:0)
Color.BLACK是argb十六进制值0xff000000的整数表示。所以你的陈述是检查圆圈中的中心点是否与Color.BLACK完全相同的透明度,红色值,蓝色值和绿色值。
一些选择:
您可以尝试使用
比较rgb值if(Color.rgb(Color.red(Color.BLACK), Color.green(Color.BLACK), Color.blue(Color.BLACK) == Color.rgb(Color.red(pixelColor), Color.green(pixelColor), Color.blue(pixelColor))
或者,您可以扫描整个圆圈以获得黑色(0x000000)像素。
或者您可以使用色差算法,您可以根据需要测试不同的公差。这可以帮助您How to compare two colors for similarity/difference。
以下内容尚未经过测试,但会让您了解您可以采取的方向:
//mid points x1 and y1
int x1=(int) (myMidPoint.x) /2;
int y1=(int)(myMidPoint.y)/2;
int radius = 30;
int topPoint = y1 - radius;
int leftPoint = x1 - radius;
int rightPoint = x1 + radius;
int bottomPoint = y1 + radius;
int scanWidth = 0;
for(int i = topPoint; i < bottomPoint; i++)
{
if(i <= y1)
{
scanWidth++;
}
else {
scanWidth--;
}
for(int j = x1 - scanWidth; j < x1 + scanWidth; j++)
{
int pixelColor = myBitmap.getPixel(j,i);
if(Color.rgb(Color.red(Color.BLACK), Color.green(Color.BLACK), Color.blue(Color.BLACK) == Color.rgb(Color.red(pixelColor), Color.green(pixelColor), Color.blue(pixelColor))
{
System.out.println("pixel black");
}
}
}