問題があり、理解できません。私は2つの異なる画像処理技術を使用する必要があります:スケルトン化 と間引き、そして私はこれをJavaで行う必要があります。問題は、これに関する開始点やチュートリアルが見つからないことです。誰かが私にどこから始めるべきか教えてもらえますか、または誰かが私にそれを達成する方法を説明できますか?私はJavaでアプリケーションを書いていますが、BufferedImage
可能であれば(もちろん)、を使用したいと思います。
ありがとう
次のようにBufferedImageに描画できます。
public BufferedImage createSkelethonizationImage() {
BufferedImage image = new BufferedImage(width, height);
Graphics2D g2 = image.createGraphics();
// Perform your drawing here
g2.drawLine(...);
g2.dispose();
return image;
}
画像を描画するには、JComponentを拡張し、paintメソッドをオーバーライドする新しいクラスを作成します。開始するためのコードは次のとおりです。
public class MyImage extends JComponent {
// Note: the image should be modified on the Event Dispatch Thread
private BufferedImage image = createSkelethonizationImage();
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}
編集-完全な解決策:
public class Test {
public static void main(String[] args) {
// Width and height of your image
final int width = 200;
final int height = 200;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
MyImage image = new MyImage(width, height);
frame.add(image);
frame.setSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MyImage extends JComponent {
// Note: image should be modified on the Event Dispatch Thread only
private final BufferedImage image;
public MyImage(int width, int height) {
image = createSkelethonizationImage(width, height);
setPreferredSize(new Dimension(width, height));
}
public BufferedImage createSkelethonizationImage(int width, int height) {
BufferedImage iamge = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = iamge.createGraphics();
// Perform your drawing here
g2.setColor(Color.BLACK);
g2.drawLine(0, 0, 200, 200);
g2.dispose();
return iamge;
}
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}