イメージアレイに複数のイメージを格納して表示している間に問題が発生しました。私が遭遇する問題は多少刺激的です。最後のイメージが表示されるでもindex.Iに言及した後、サイズを確認し、それがok.Heres私はHERESに世界クラスイメージアレイに複数のイメージを保存して表示できませんでした
import marvin.image.*;
import marvin.io.*;
import marvin.gui.*;
import java.awt.FlowLayout;
import java.awt.Image;
import javax.swing.JFrame;
public class apples {
public static int WORLD_WIDTH = 500;
public static int WORLD_HEIGHT = 300;
public static void main(String[] args){
JFrame worldFrame = new JFrame("world");
worldFrame.getContentPane();
worldFrame.add(new world(WORLD_WIDTH, WORLD_HEIGHT));
worldFrame.setVisible(true);
worldFrame.setSize(WORLD_WIDTH , WORLD_HEIGHT+30);
worldFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
segmentObjects segment = new segmentObjects();
}
}
しようとしているサンプルコードでしています
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class world extends JPanel{
static int SPACEX;
static int SPACEY ;
public static Image world;
static int movex = 100;
static int movey = 240;
public world(int WORLD_WIDTH, int WORLD_HEIGHT) {
SPACEX = WORLD_WIDTH;
SPACEY = WORLD_HEIGHT;
}
public void paint(Graphics g) {
BufferedImage worldB = new BufferedImage(SPACEX,SPACEY,BufferedImage.TYPE_BYTE_BINARY);
Graphics worldG = worldB.getGraphics();
worldG.setColor(Color.WHITE);
worldG.fillRect(0, 0,SPACEX, SPACEY); // draw the space
worldG.setColor(Color.BLACK);
//worldG.fillRect(movex, movey,50, 50); //draw the agent
worldG.fillOval(300, 100, 50, 50);
//worldG.fillOval(395, 100, 50, 50);
for(int x =220;x<300;x++){
worldG.drawLine(200, 200, x, 250);}
world = worldB;
g.drawImage(world, 0, 0, this);
}
}
HERESにセグメントクラス:
をimport static marvin.MarvinPluginCollection.floodfillSegmentation;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.LinkedList;
import javax.swing.JFrame;
import static marvin.MarvinPluginCollection.*;
import marvin.gui.MarvinImagePanel;
import marvin.image.MarvinBlob;
import marvin.image.MarvinBlobSegment;
import marvin.image.MarvinContour;
import marvin.image.MarvinImage;
import marvin.image.MarvinSegment;
import marvin.io.MarvinImageIO;
import marvin.math.Point;
public class segmentObjects extends JFrame{
static MarvinImage original = new MarvinImage((BufferedImage) world.world);
static public int x1;
static public int y1;
static public int width;
static public int height;
static MarvinImage memory = new MarvinImage();
static ArrayList<Point> countorPoints = new ArrayList<Point>();
static int counter;
static MarvinImage[] ImgSeg=new MarvinImage[10];
public segmentObjects(){
super("segments");
MarvinImage image = original.clone();
MarvinSegment[] segments = floodfillSegmentation(image);
for(int i=1; i<segments.length; i++){
MarvinSegment seg = segments[i];
x1 =seg.x1;
y1 = seg.y1;
width = seg.width;
height =seg.height;
crop(original,memory,x1,y1,width,height);
ImgSeg[i-1]=memory;
//System.out.println(width+" "+height);
//System.out.println(ImgSeg.size());
counter =segments.length-1;
//contour(i);
}
System.out.println(ImgSeg[1].getWidth());
MarvinImagePanel imagePanel = new MarvinImagePanel();
imagePanel.setImage(ImgSeg[0]);
add(imagePanel);
setSize(400,630);
setVisible(true);
}
}
申し訳ありませんが、私は私のメインのプロジェクトから
あなたは最小限の作業例を投稿することができ、この行を削除しますか? – ahoxha
私はどのような例urのrefer.itsは理解していないちょうどそれshould should.thats問題を解決する –
私はちょうどイメージ内の異なるオブジェクトをセグメント化し、これらのオブジェクトをセグメント化するために、オブジェクトのint配列をイメージし、後で使用されるwill.butで表示されます。ただし、index.itを使用してイメージを表示しようとすると、最後のイメージが表示されます。問題はわかりません。本当に感知できる。 –