이전에 서로 꿰매어 졌던 하나의 이미지에서 개별 이미지를 추출하여 처리해야합니다. 예 : 아래 그림과 같이 네 개의 독립적 인 이미지를 하나 개의 이미지를 생성하는 스티치됩니다하나의 이미지에서 이전에 꿰매어 진 이미지 수를 결정할 때 문제가 발생합니다.
이미지 처리에 대한 새로운 인 제가 조사를 좀 해봤 내 요구 사항에 적합한 Java Image IO을 발견했다.
이미지 추출 및 처리
ImageInputStream oldImage = ImageIO
.createImageInputStream(new FileInputStream("Four_Image_Stitched.jpeg"));
ImageReader imageReader = getImageReader(imageFormat);
imageReader.setInput(oldImage);
int nosOfImages = imageReader.getNumImages(true);
System.out.println("Number of Images = " + nosOfImages);
if (nosOfImages > 1) {
for (int i = 0; i < nosOfImages; i++) {
BufferedImage image = imageReader.read(i);
// do some processing
}
}
가져 오기 이미지 리더 인스턴스
private ImageReader getImageReader(String imageFormat) {
if ("PNG".equalsIgnoreCase(imageFormat)) {
return new PNGImageReader(new PNGImageReaderSpi());
}
if ("JPEG".equalsIgnoreCase(imageFormat)) {
return new JPEGImageReader(new JPEGImageReaderSpi());
}
if ("GIF".equalsIgnoreCase(imageFormat)) {
return new GIFImageReader(new GIFImageReaderSpi());
}
if ("BMP".equalsIgnoreCase(imageFormat)) {
return new BMPImageReader(new BMPImageReaderSpi());
}
return null;
}
문제는 여기에 imageReader.getNumImages(true)
항상 1
를 반환한다 :
이
내가 지금까지 쓴 것입니다 모든 형식 및 관계없이 스티칭 된 이미지의 수; 나는 실제 이미지 수를 스티칭해야하고 구체적으로 언급 된 예제에서4
이라고 가정합니다.
정확히 여기 내가 누락 된 것이 확실하지 않습니다!
이와 관련하여 도움이나 조언을 주시면 감사하겠습니다.
P.S : 하나의 이미지가 스티치 이미지, 다른 차원 각각의 n
수를 포함 할 수 있습니다 손 즉 전에 하나에 스티치 이미지
번호는 알 수 없습니다.
나는 이것이 'getNumImages'가 무엇을위한 것인지가 확실하지 않습니다. 나는 여러 개의 이미지 (예 : 애니메이션 GIF)가있는 포맷이 아니라 이전에 파트에서 어셈블 된 ** 이미지가있는 포맷을위한 것임을 믿습니다. 나는 당신이 그들을 식별 할 수있는 유일한 방법은 급격한 색 변환으로 직사각형을 찾는 것이라고 의심합니다. –
@ Javabond : 죄송합니다. 중요한 이미지 처리를 한 적이 없습니다. 행운을 빕니다, –