package color;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import java.io.File;
import static javafx.application.Application.launch;
import javafx.scene.image.ImageView;
import javafx.scene.Group;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.input.MouseEvent;
import tool.*;
public class pro extends Application {
GraphicsContext gc;
int w=519;
int h=767;
int[][] memor=new int[h][w];
int[][] memog=new int[h][w];
int[][] memob=new int[h][w];
int number;
int[][] df=new int[h][w];
int[] pointx=new int[100];
int[] pointy=new int[100];
int xx,yy;
int[] countx=new int[100];
int[] county=new int[100];
int[] routex=new int[10000];
int[] routey=new int[10000];
int n,datanumber;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
number=0;
catchimg sub=new catchimg();
sub.makedata("pic.jpg");
memor=sub.memor;
memog=sub.memog;
memob=sub.memob;
boader sub2=new boader();
sub2.memor=memor;
sub2.memog=memog;
sub2.memob=memob;
sub2.makedata();
df=sub2.df;
Canvas canvas = new Canvas(600,800);
gc = canvas.getGraphicsContext2D();
canvas.setLayoutX(10);
canvas.setLayoutY(10);
gc.setFill(Color.WHITE);
gc.fillRect(0,0,550,770);
int mx,nx;
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){
Color col = Color.rgb(memor[mx][nx],memog[mx][nx], memob[mx][nx]);
gc.setFill(col);
gc.fillRect(nx,mx,1,1);
}
}
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){
gc.setFill(Color.BLUE);
if(df[mx][nx]>50)gc.fillRect(nx,mx,2,2);
}
}
canvas.addEventHandler(MouseEvent.MOUSE_CLICKED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
int x1,y1;
x1=(int)e.getX();
y1=(int)e.getY();
number=number+1;
pointx[number]=x1;
pointy[number]=y1;
gc.setFill(Color.RED);
gc.fillRect(x1,y1,5,5);
}
});
Button btn = new Button();
btn.setText("決定");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
int s;
for(s=1;s<number+1;s++){
met(pointx[s],pointy[s]);
countx[s]=xx;
county[s]=yy;
}
for(s=1;s<number+1;s++){
gc.setFill(Color.GREEN);
gc.fillRect(countx[s],county[s],10,10);
}
}
});
btn.setLayoutX(600);
btn.setLayoutY(200);
Button btn2 = new Button();
btn2.setText("曲線");
btn2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
makekine sub7=new makekine();
sub7.number=number;
sub7.countx=countx;
sub7.county=county;
sub7.df=df;
sub7.makedata();
routex=sub7.routex;
routey=sub7.routey;
datanumber=sub7.datanumber;
int s;
System.out.println(datanumber);
for(s=1;s<datanumber+1;s++){
gc.setFill(Color.RED);
System.out.println("z"+routex[s]);
gc.fillRect(routex[s],routey[s],2,2);
}
}
});
btn2.setLayoutX(600);
btn2.setLayoutY(300);
Button btn3 = new Button();
btn3.setText("メモ");
btn3.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String[] data=new String[500000];
int s;
for(s=1;s<datanumber+1;s++){
data[s]=routex[s]+","+routey[s];
}
writefile sd=new writefile();
sd.datanumber=datanumber;
sd.data=data;
sd.makedata("g.txt");
}
});
btn3.setLayoutX(600);
btn3.setLayoutY(400);
Group root = new Group();
Scene scene = new Scene(root, 800, 800);
root.getChildren().add(canvas);
root.getChildren().add(btn);
root.getChildren().add(btn2);
root.getChildren().add(btn3);
primaryStage.setTitle("画像処理");
primaryStage.setScene(scene);
primaryStage.show();
}
void met(int x1,int y1){
int mx,nx;
int minf,f1;
minf=99999;
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){
f1=(mx-y1)*(mx-y1)+(nx-x1)*(nx-x1);
if(df[mx][nx]<50)f1=99999;
if(f1<minf)xx=nx;
if(f1<minf)yy=mx;
if(f1<minf)minf=f1;
}
}
}
}
最終更新:2016年05月01日 09:10