2012-05-18 1 views
2

ImageJ의 가장자리 찾기 옵션을 사용하고 가장자리를 찾은 배열을 프로그래밍 방식으로 다른 파일에 저장하고 싶습니다.ImageJ를 사용하여 프로그램에서 이미지 찾기

ImagePlus ip1 = IJ.openImage("myimage.jpg"); 
ImageProcessor ip = new ColorProcessor(ip1.getWidth(), ip1.getHeight()); 
ip.findEdges(); 

그러나, 기능 findEdges 추상적이고 나는 가장자리 발견 된 이미지를 가질 수 없습니다.

편집 :

내가 쓴 다음 줄 : 그러나

ip.findEdges(); 
BufferedImage bimg = ip.getBufferedImage(); 

, 나는의 BufferedImage의 RGB 값을 출력하려고, 그것은 단지 인쇄 "-16777216"각 픽셀에 대한 RGB.

+0

이 관련 [Q & A] (http://stackoverflow.com/q/14170238/230513)도 참조하십시오. – trashgod

답변

2

확인을, 나는 해결책을 가지고, 문제는 내가 이미지로 ColorProcessor를 연결하지 않은 것이 었습니다.

ColorProcessor ip = new ColorProcessor(ImageIO.read(new File("my_image.jpg"))); 
ip.findEdges(); 
BufferedImage bimg = ip.getBufferedImage(); 
+0

질문에 대답했던 것처럼'ip'를'ImageProcessor'로 선언 할 수 있습니다. – Attila

+0

초기화의 왼쪽은 메모리 블록을 참조하기 때문에 여기서는 중요하지 않습니다. 오른편은 작업이 먼저 검색 될 실제 클래스입니다. 그래서 당신이 말하는 것은 옳습니다. –

0

ImageProcessor는 파생 클래스가 적절한 구현을 제공 할 수 있도록하는 추상 클래스입니다. 당신은 유형 ColorProcessor으로 ip를 선언해야합니다

ColorProcessor ip = new ColorProcessor(ip1.getWidth(), ip1.getHeight()); 
ip.findEdges(); 
+0

가장자리 발견 배열에 어떻게 도달합니까? 나는 또한 ColorProcessor로 초기화한다. 먼저 vtable의 ColorProcessor 함수를 살펴볼 것이다. –

+0

ImageJ 전문가가 아니지만 [documentation] (http://rsbweb.nih.gov/ij/developer/api/ij/process/ColorProcessor.html)을 보면 그렇게 할 방법이없는 것으로 보입니다. 오히려'findEdges()'는 이미지에 변형을 적용하여 (예를 들어'createImage() '를 통해) 이미지를 얻을 때 원본 이미지 대신에 가장자리가 감지되도록합니다. – Attila

+0

당신의 노력에 감사드립니다. 그러나 해결책을 얻었습니다. 관심이 있다면 아래에 게시하십시오. –

관련 문제