アットウィキロゴ

package rgb;
 
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.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.scene.canvas.Canvas;
 import javafx.scene.Group;
 
 
public class pro extends Application {
 
GraphicsContext gc;    
int w=500;
int h=500;          
int[][] memor=new int[h][w]; 
int[][] memog=new int[h][w]; 
int[][] memob=new int[h][w];  
int[][] rgb=new int[h][w];
int[][] df=new int[h][w];
double[][] dth=new double[h][w];
 
    public static void main(String[] args) {
        launch(args);
    }
 
 
    @Override
    public void start(Stage primaryStage) {
 
    catchimg sub=new catchimg();
    sub.w=500;
    sub.h=500;
    sub.makedata("1.jpg");
    memor=sub.memor;
    memog=sub.memog;
    memob=sub.memob; 
 
 
Canvas can = new Canvas(500,500);
gc = can.getGraphicsContext2D();
can.setLayoutX(50);
can.setLayoutY(50);
 
gc.setFill(Color.WHITE);
gc.fillRect(0,0,500,600);
 
 int mx,nx;
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){ 
rgb[mx][nx]=rgb(mx,nx);
}
}
 
double r1,x1,y1;
 
for(mx=1;mx<h;mx++){
for(nx=1;nx<w;nx++){ 
r1=(rgb[mx][nx]-rgb[mx][nx-1])*(rgb[mx][nx]-rgb[mx][nx-1]);
r1=r1+(rgb[mx][nx]-rgb[mx-1][nx])*(rgb[mx][nx]-rgb[mx-1][nx]);
df[mx][nx]=(int)Math.sqrt(r1);
}
}
 
for(mx=1;mx<h;mx++){
for(nx=1;nx<w;nx++){ 
x1=rgb[mx][nx]-rgb[mx-1][nx];
y1=rgb[mx][nx]-rgb[mx][nx-1];
dth[mx][nx]=kakudo(x1,y1);
}
}
 
int z;
 
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){    
 
gc.setFill(Color.BLACK);
z=0;
if(df[mx][nx]>3)z=z+1;
if(dth[mx][nx]>180)z=z+1; 
if(z==2)gc.fillRect(nx,mx,1,1);
gc.setFill(Color.RED);
z=0;
if(df[mx][nx]>3)z=z+1;
if(dth[mx][nx]<180)z=z+1; 
if(z==2)gc.fillRect(nx,mx,1,1);
 
}
}
 
 
 
 
Group root = new Group();
Scene scene = new Scene(root, 700, 700);    
root.getChildren().add(can);
 
 
        primaryStage.setTitle("画像処理");
        primaryStage.setScene(scene);
        primaryStage.show(); 
 
 
 
 
    }
    public int kakudo(double x,double y){
 
  double s;
  int deg;
 
  s=Math.acos(x/Math.sqrt(x*x+y*y)); /*角度θを求める*/
 
  double pie=Math.PI;
 
  s=(s/pie)*180.0; 
 
  if (y<0) s=360-s;
 
  deg=(int)Math.floor(s);
 
  if ((s-deg)>=0.5)deg++;
 
  return deg; 
 
}
 
 
int rgb(int mx,int nx){
 int r1,g1,b1,rg;
 
r1=memor[mx][nx];   
g1=memog[mx][nx];  
b1=memob[mx][nx];  
rg=(int)(0.6*r1+0.3*g1+0.1*b1);
return rg;
}
 
 
}
 
最終更新:2014年04月20日 00:16