이미지에서 흰색 직사각형을 찾으려고합니다. 사각형 크기는 고정되어 있습니다. 이것은 내가 아직 같이 왔어요 것입니다 : 내가 필요로하는 사각형 (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);
이이 작품을 좋아하지만 더 멀리 얻을로, 성능이 매우 심각하게 저하됩니다. 할 수있는 일이 있다면 궁금해하니?
예를 들어,이 검색은 거의 8 초가 걸렸습니다. 나는 이것이 더 효과적으로 효과적으로 수행 될 수 있다고 생각합니다. 어떤 얼룩 발견? 그것에 대해 읽어보십시오,하지만 그것을 어떻게 적용할지 모르겠습니다.
또한 자바와 이미지 처리에 익숙하지 않으므로 도움을 받으실 수 있습니다.
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 1,191px × 1,684px의 이미지를 게시 할 필요가 없습니다. *** 작물에 대해 들어 보지 못했습니까 ***?!? –
이것은 SSCCE입니다. 코드의 모든 부분은 문제와 관련이 있습니다. 이미지에 관해서는 - 그렇습니다. 내 문제의 범위를 표시하기 위해 전체 이미지를 넣었습니다. 이미지가 잘린다면, 바닥에 도달하는 데 오래 걸리지 않을 것입니다. 이제는 분명합니다. –
* "이것은 SSCCE입니다."* 원하는만큼 큰 소리로 말하지만 사실이 아닙니다. * "코드의 모든 부분이 문제와 관련이 있습니다."* 음 ... 좋습니다. 코드를 'SC'로 만드는 데 필요한 부분은 무엇입니까? 혼란 스러울 경우, 문제는 코드의 길이가 아닙니다. 실제로 * 링크를 읽었습니까? * "내 문제의 범위를 표시하기 위해 전체 이미지를 넣었습니다."* 당신의 케이크를 가지고 그것을 먹을 수있는 하나의 영리한 속임수 (테스트 할 큰 이미지뿐만 아니라 다운로드/사용할 작은 이미지가 있음))는 포스트에 작은 이미지를 삽입 한 다음 런타임에이를 큰 이미지로 그립니다. –