나는 이미지 처리 작업을하고 있는데 질문이있다.이미지 변환기 java
프로젝트에서 이미지를 읽고 이미지를 회색으로 변환하고 싶습니다. 현재 rgb2gray 함수로 변환하려고하지만 여전히 작동하지 않습니다.
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class ImageTesting extends Component {
private static int[] pixel;
private static BufferedImage b;
BufferedImage image;
public void paint(Graphics g) {
g.drawImage(image, 0, 0, null);
}
public ImageTesting() {
try {
image = ImageIO.read(new File("teste.jpg"));
} catch (IOException e) {
}
}
public Dimension getPreferredSize() {
if (image == null) {
return new Dimension(400, 400);
} else {
return new Dimension(image.getWidth(null), image.getHeight(null));
}
}
public static BufferedImage rgb2gray(BufferedImage bi) {
int heightLimit = bi.getHeight();
int widthLimit = bi.getTileWidth();
BufferedImage converted = new BufferedImage(widthLimit, heightLimit, BufferedImage.TYPE_BYTE_GRAY);
for (int height = 0; height < heightLimit; height++) {
for (int width = 0; width < widthLimit; width++) {
Color c = new Color(bi.getRGB(width, height) & 0x00fffff);
int newRed = (int) ((0.2989f * c.getRed()) * 2);// 0.2989f//multiplicr po 2
int newGreen = (int) ((0.5870f * c.getGreen()) * 2);// 0.5870f
int newBlue = (int) ((0.1140f * c.getBlue()) * 2);
int roOffset = newRed + newGreen + newBlue;
converted.setRGB(width, height, roOffset);
}
}
return converted;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
JFrame f = new JFrame("Load Image Sample");
JFrame g = new JFrame("Image RGB");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
g.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(new ImageTesting());
f.pack();
f.setVisible(true);
g.add(new ImageTesting());
rgb2gray(b);
}
}
프로그램을 실행할 때 나타나는 오류입니다.
누군가 나를 도울 수 있다면, 나는 사과한다. 감사
편집 : 나는이 문제를 해결하기 위해 관리,하지만 지금은 다른 질문이 올라왔다. 내 작업을 계속하려면 결과 이미지에서 가장 많은 10 점을 찾고 색인의 값이 0 인 색인에서 검정색으로 된 다른 이미지를 반환하고 값이 1 인 색인에서 흰색을 반환하지만이 시점에서 단계를 해결하는 가장 좋은 방법을 이해하지 못합니다.
* "나는 의심의 여지가있다"* 중고차 세일즈맨 및 정치인의 주장에 대한 의심을 피하십시오. 질문이 있으면 질문하십시오 (& 질문). 귀하의 질문은 무엇인가? –
어떤 오류가 있습니까? –
@AndrewThompson 나는 단어의 선택에 대한 비난을 구할 것이다. OP가 영어 원어민이 아니 어서 "나는 의심 스럽습니다"라는 말을 사용하는 것이 일반적이지 않은 어구 일 수 있습니다. –