检测大量损坏金钱
Detect large of damage money
我正在开发一款检测 "damage amount" 纸币的应用程序。
该应用程序将评估用户输入的图像,并确认他们是否有权更换纸币。
输出为:if 30% of lost of money object, can allow changing at the bank
。
我有想法,我们用相机拍摄金钱并且损坏背景是白色的,所以在 AS3 中可以计算白色的百分比。如果低于30%那么最好换银行。
知道如何计算图像中白色的百分比吗?谢谢
-- 编辑 --
我有代码@VC.One,你可以更正一下吗?谢谢
import flash.media.Camera;
import flash.media.Video;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
var camMoney: Camera = Camera.getCamera();
camMoney.setQuality(0, 100);
camMoney.setMode(480, 300, 30, true);
var vidMoney: Video = new Video(480, 300)
vidMoney.x = 0;
vidMoney.y = 10;
addChild(vidMoney);
vidMoney.attachCamera(camMoney);
var moneyBD: BitmapData = new BitmapData(vidMoney.width, vidMoney.height);
var moneyBM: Bitmap = new Bitmap(moneyBD);
moneyBM.x = 0;
moneyBM.y = 376;
addChild(moneyBM);
var circle: Sprite = new Sprite();
circle.graphics.lineStyle(2, 0xFFFFFF);
circle.graphics.beginFill(0x000000);
circle.graphics.drawCircle(225, 340, 20);
circle.graphics.endFill();
addChild(circle);
circle.buttonMode = true;
circle.addEventListener(MouseEvent.CLICK, capture);
function capture(e: MouseEvent): void {
moneyBD.draw(vidMoney);
}
var circleRect: Sprite = new Sprite();
circleRect.graphics.lineStyle(2, 0xFFFFFF);
circleRect.graphics.beginFill(0xFF0000);
circleRect.graphics.drawRoundRect(260, 320, 60, 40, 30);
circleRect.graphics.endFill();
addChild(circleRect);
circleRect.buttonMode = true;
circleRect.addEventListener(MouseEvent.CLICK, analisa);
function analisa(e: MouseEvent): void {
var xi: int;
var yi: int;
var pixel: uint;
var color: uint;
var pointsWhite: Array = [];
for (xi = 0; xi = 2) {
var lengthOfWhiteSpace: int = pointGroup[pointGroup.length - 1].x - pointGroup[0].x;
var t: TextField = new TextField();
t.x = pointGroup[0].x;
t.y = pointGroup[0].y;
addChild(t);
}
}
OP 是 SOF 的新手,不小心添加了额外的问题信息作为答案。我将其移至 OP 下的编辑中,因为我无权删除此 "answer".
百分比公式为:amountFound * 100 / amountTotal
例如,如果您将 200 美元放在某处,但只找到 50 美元。执行 50 * 100 / 200
表示您找到了 25%。如果您又找到了 50 美元(现在是 100 美元),它会告诉您您得到了 200 美元的 50%。
有了这个基本公式,您就可以像这样将它用于您的 Analisa
函数...
function analisa(e:MouseEvent = null) : void
{
var xi: int=0; var yi: int=0; var pixel: uint=0;
var totalPixels_image : int = 0;
var totalPixels_white : int = 0;
var PercentWhitePixels : Number = 0;
//# get total pixels
totalPixels_image = bmpData.width * bmpData.height;
//# get total white pixels
for (yi = 0; yi < bmpData.height; yi++)
{
for (xi = 0; xi < bmpData.width; xi++)
{
pixel = bmpData.getPixel( xi, yi );
if ( pixel == 0xFFFFFF)
{
totalPixels_white += 1; //++;
}
}
}
PercentWhitePixels = ( (totalPixels_white * 100) / totalPixels_image);
//# get results
trace("=== RESULTS =================================");
trace("Image Width : " + bmpData.width );
trace("Image Height : " + bmpData.height );
trace("total Pixels in Image : " + totalPixels_image);
trace("total Pixels of White : " + totalPixels_white);
trace("Percentage of White : " + PercentWhitePixels) + "%";
}
对我来说,你的图像的结果是 0.1895...。但从我的眼睛来看,我认为大约 5% 到 10% 看起来 更正确(不是这个计算的 0.18%)。如果将结果乘以 100,它将变为 18.95%
,但现在看起来太多了。
我认为需要额外或不同的计算,我会在以后想到什么时更新,但这个答案应该可以帮助您开始..
PS 考虑检查一下:
1)Percentage: Difference vs Error。
2)我想Percentage Difference可能对你有帮助。
我正在开发一款检测 "damage amount" 纸币的应用程序。
该应用程序将评估用户输入的图像,并确认他们是否有权更换纸币。
输出为:if 30% of lost of money object, can allow changing at the bank
。
我有想法,我们用相机拍摄金钱并且损坏背景是白色的,所以在 AS3 中可以计算白色的百分比。如果低于30%那么最好换银行。
知道如何计算图像中白色的百分比吗?谢谢
-- 编辑 --
我有代码@VC.One,你可以更正一下吗?谢谢
import flash.media.Camera; import flash.media.Video; import flash.display.BitmapData; import flash.display.Bitmap; import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; var camMoney: Camera = Camera.getCamera(); camMoney.setQuality(0, 100); camMoney.setMode(480, 300, 30, true); var vidMoney: Video = new Video(480, 300) vidMoney.x = 0; vidMoney.y = 10; addChild(vidMoney); vidMoney.attachCamera(camMoney); var moneyBD: BitmapData = new BitmapData(vidMoney.width, vidMoney.height); var moneyBM: Bitmap = new Bitmap(moneyBD); moneyBM.x = 0; moneyBM.y = 376; addChild(moneyBM); var circle: Sprite = new Sprite(); circle.graphics.lineStyle(2, 0xFFFFFF); circle.graphics.beginFill(0x000000); circle.graphics.drawCircle(225, 340, 20); circle.graphics.endFill(); addChild(circle); circle.buttonMode = true; circle.addEventListener(MouseEvent.CLICK, capture); function capture(e: MouseEvent): void { moneyBD.draw(vidMoney); } var circleRect: Sprite = new Sprite(); circleRect.graphics.lineStyle(2, 0xFFFFFF); circleRect.graphics.beginFill(0xFF0000); circleRect.graphics.drawRoundRect(260, 320, 60, 40, 30); circleRect.graphics.endFill(); addChild(circleRect); circleRect.buttonMode = true; circleRect.addEventListener(MouseEvent.CLICK, analisa); function analisa(e: MouseEvent): void { var xi: int; var yi: int; var pixel: uint; var color: uint; var pointsWhite: Array = []; for (xi = 0; xi = 2) { var lengthOfWhiteSpace: int = pointGroup[pointGroup.length - 1].x - pointGroup[0].x; var t: TextField = new TextField(); t.x = pointGroup[0].x; t.y = pointGroup[0].y; addChild(t); } }
OP 是 SOF 的新手,不小心添加了额外的问题信息作为答案。我将其移至 OP 下的编辑中,因为我无权删除此 "answer".
百分比公式为:amountFound * 100 / amountTotal
例如,如果您将 200 美元放在某处,但只找到 50 美元。执行 50 * 100 / 200
表示您找到了 25%。如果您又找到了 50 美元(现在是 100 美元),它会告诉您您得到了 200 美元的 50%。
有了这个基本公式,您就可以像这样将它用于您的 Analisa
函数...
function analisa(e:MouseEvent = null) : void
{
var xi: int=0; var yi: int=0; var pixel: uint=0;
var totalPixels_image : int = 0;
var totalPixels_white : int = 0;
var PercentWhitePixels : Number = 0;
//# get total pixels
totalPixels_image = bmpData.width * bmpData.height;
//# get total white pixels
for (yi = 0; yi < bmpData.height; yi++)
{
for (xi = 0; xi < bmpData.width; xi++)
{
pixel = bmpData.getPixel( xi, yi );
if ( pixel == 0xFFFFFF)
{
totalPixels_white += 1; //++;
}
}
}
PercentWhitePixels = ( (totalPixels_white * 100) / totalPixels_image);
//# get results
trace("=== RESULTS =================================");
trace("Image Width : " + bmpData.width );
trace("Image Height : " + bmpData.height );
trace("total Pixels in Image : " + totalPixels_image);
trace("total Pixels of White : " + totalPixels_white);
trace("Percentage of White : " + PercentWhitePixels) + "%";
}
对我来说,你的图像的结果是 0.1895...。但从我的眼睛来看,我认为大约 5% 到 10% 看起来 更正确(不是这个计算的 0.18%)。如果将结果乘以 100,它将变为 18.95%
,但现在看起来太多了。
我认为需要额外或不同的计算,我会在以后想到什么时更新,但这个答案应该可以帮助您开始..
PS 考虑检查一下:
1)Percentage: Difference vs Error。
2)我想Percentage Difference可能对你有帮助。