画像内に白い矩形を見つけようとしています。長方形のサイズは固定です。これは私がまだのよう作ってみたものです:私は必要な矩形が(0;0)
の初めに近い場合画像内の白い矩形を見つける
BufferedImage bImage = bufferedImage;
int height = bufferedImage.getHeight(); //~1100px
int width = bufferedImage.getWidth(); //~1600px
int neededWidth = width/2;
int neededHeight = 150;
int x = 0;
int y = 0;
boolean breaker = false;
boolean found = false;
int rgb = 0xFF00FF00;
int fx, fy;
fx = fy = 0;
JavaLogger.log.info("width, height: " + w + ", " + h);
while ((x != (width/2) || y != (height - neededHeight)) && found == false) {
for (int i = y; i - y < neededHeight + 1; i++) {
for (int j = x; j - x < neededWidth + 1; j++) { //Vareetu buut, ka +1 vajadziigs
//JavaLogger.log.info("x,y: " + j + ", " + i);
long pixel = bImage.getRGB(j, i);
if (pixel != colorWhite && pixel != -1) {
//bImage.setRGB(j, i, rgb);
//JavaLogger.log.info("x,y: " + (j+x) + ", " + (i+y));
breaker = true;
break;
} else {
//bImage.setRGB(j, i, 0xFFFFFF00);
}
//printPixelARGB(pixel);
if ((i - y == neededHeight-10) && j - x == neededWidth-10) {
JavaLogger.log.info("width, height: " + x + ", " + y + "," + j + ", " + i);
fx = j;
fy = i;
found = true;
breaker = true;
break;
}
}
if (breaker) {
breaker = false;
break;
}
}
if (x < (width/2)) {
x++;
} else {
if (y < (height - neededHeight)) {
y++;
x = 0;
} else {
break;
}
}
//JavaLogger.log.info("width, height: " + x + ", " + y);
}
if (found == true) {
for (int i = y; i < fy; i++) {
for (int j = x; j < fx; j++) {
bImage.setRGB(j, i, 0xFF00FF3F);
}
}
}
JavaLogger.log.info("width, height: " + w + ", " + h);
これは、[OK]を動作しますが、それはさらに逃げるように、パフォーマンスはかなり厳しく低下します。何かできることがあれば、私は疑問に思いますか?
たとえば、この検索には8秒近くかかりました。これはかなり大変です。 私は、これがもっと効果的に行えると思っています。たぶん、いくつかのブロブを見つけるかもしれない?それについて読むが、私はどのようにそれを適用するか分からない。
また、私はJavaと画像処理の両方に新しいので、どんな助けもありがとうございます。
[SSCCE](http://sscce.org/)を投稿するとすぐに役立ちます。 1,191ピクセル×1,684ピクセルの画像を投稿する必要はありませんでした。あなたは***作物***を聞いたことがありますか? –
これはSSCCEです。コードのすべての部分が問題に関連しています。イメージに関してはそうでした。私は問題の範囲を表示するために全体のイメージを置く。画像が切り取られた場合、底に近づくには時間がかかりません。今それは明らかです。 –
*「これはSSCCEです。」*あなたが望むほど大声で言うが、それは真実ではない。 * "コードのすべての部分が問題に関連しています。" *うーん。それを 'SC'にするために必要なコードの部分はどうですか?あなたが混乱している場合は、コードの長さではありません。あなたは実際にリンクを*読みましたか? * "私は問題の範囲を表示するために全体のイメージを置く。" *あなたのケーキを持って食べるために使うことができる1つの巧妙なトリック(ダウンロード/使用する小さなイメージとテストするための大きなイメージ)は、小さな画像をポストに埋め込み、それを実行時に大きな画像に描画することです。 –