日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 图片标注_怎么用java做一个图像细胞的标注测试的工具?,实现图片放大,框图,定位坐标?...

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 图片标注_怎么用java做一个图像细胞的标注测试的工具?,实现图片放大,框图,定位坐标?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

public class PhotoFrame extends JFrame

{

private static final long serialVersionUID = -2216276219179107707L;

private Container con;

private MousePanel zPanel;

private JScrollPane imgSp;

private JPanel btnPanel;

private String imageDir;

private String currImg;//文件名,不包含目錄

private int currIndex;//當前32313133353236313431303231363533e58685e5aeb931333366303833圖片索引

ArrayList imgList;//所有圖片的絕對路徑

public void writeCropImg() throws IOException

{

BufferedImage sourceImage = (BufferedImage) zPanel.getImg();

Image croppedImage;

ImageFilter cropFilter;

int x = zPanel.getPointX()-25;

int y = zPanel.getPointY()-25;

//四個參數分別為圖像起點坐標和寬高,即CropImageFilter(int x,int y,int width,int height),詳細情況請參考API

//指定要裁剪的的文件的寬度和高度,以及起始坐標

cropFilter =new CropImageFilter(x,y,50,50);

//生成圖片

croppedImage= Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(sourceImage.getSource(),cropFilter));

//獲取創建后的圖片的高度

int h1=croppedImage.getHeight(null);

int w1=croppedImage.getWidth(null);

BufferedImage bi=new BufferedImage(w1,h1,BufferedImage.TYPE_INT_RGB);

Graphics g=bi.getGraphics();

//在畫圖的時候可以設置背景色

g.drawImage(croppedImage,0,0,Color.white,null);

String dir = imageDir+"_crops";

//創建文件輸出流

FileOutputStream fos=new FileOutputStream(new File(dir+"/"+currImg));

//將創建的圖片寫入到輸出流

ImageIO.write(bi, "png", fos);

fos.close();

}

private void showNext()

{

updateCurrName();

zPanel.setImagePath(imgList.get(currIndex));

currIndex++;

}

private void updateCurrName()

{

String path = imgList.get(currIndex);

int index = path.lastIndexOf('/');

currImg = path.substring(index);

}

private class nextHandler implements ActionListener

{

@Override

public void actionPerformed(ActionEvent e)

{

showNext();

}

}

private class openDirHandler implements ActionListener

{

@Override

public void actionPerformed(ActionEvent e)

{

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//設置只能選擇目錄

int returnVal = chooser.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION)

{

imageDir =chooser.getSelectedFile().getPath();

imgList = FileTool.refreshFileList(imageDir);

currIndex = 0;

showNext();

//System.out.println ( "你選擇的目錄是:" + selectPath );

//你選擇的目錄是:/home/linger/imdata/collar

}

}

}

private void savePointAndImg()

{

try

{

String dir = imageDir+"_points";

int x = zPanel.getPointX();

int y = zPanel.getPointY();

//打開文件

File f=new File(dir+"/");

if(!f.exists())

{

f.mkdir();

}

f=new File(dir+"/"+currImg);

if(!f.exists())

{

f.createNewFile();

}

FileOutputStream fos=new FileOutputStream(f);

OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");

BufferedWriter bw=new BufferedWriter(osw);

//寫入文件

bw.write(x+","+y);

//關閉文件

bw.close();

osw.close();

fos.close();

writeCropImg();

}

catch (IOException e1)

{

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

private class savePointHandler implements ActionListener

{

@Override

public void actionPerformed(ActionEvent e)

{

savePointAndImg();

}

}

private class openImageHandler implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

JFileChooser chooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & PNG Images", "jpg", "png");

chooser.setFileFilter(filter);

int returnVal = chooser.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION)

{

File file = chooser.getSelectedFile();

imageDir = file.getParent();

imgList = FileTool.refreshFileList(imageDir);

currImg = file.getName();//文件名,不包含路徑

// System.out.println();

String path = file.getAbsolutePath();

currIndex = imgList.indexOf(path);

zPanel.setImagePath(path);

currIndex++;

//內部類訪問外部類,可以直接訪問的啊

}

}

}

private PhotoFrame()

{

con = getContentPane();

con.setLayout(new GridLayout(2,2));

zPanel = new MousePanel();

//zPanel.setImagePath("/home/linger/17820d01");//綁定圖片

//zPanel.setPreferredSize(new Dimension(zPanel.getImgWidth(), zPanel.getImgHeight()));

imgSp = new JScrollPane();

imgSp.setPreferredSize(new Dimension(zPanel.getImgWidth(), zPanel.getImgHeight()));

imgSp.setViewportView(zPanel);

imgSp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

imgSp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

//con.add(imgSp, BorderLayout.CENTER);

con.add(imgSp);

btnPanel = new JPanel();

btnPanel.setLayout(new FlowLayout());

btnPanel.setSize(300,100);

JButton button = new JButton("打開圖片");

button.setSize(100, 50);

btnPanel.add(button);

button.addActionListener(new openImageHandler());

button = new JButton("保存坐標");

button.setSize(100, 50);

btnPanel.add(button);

button.addActionListener(new savePointHandler());

button = new JButton("打開目錄");

button.setSize(100, 50);

btnPanel.add(button);

button.addActionListener(new openDirHandler());

button = new JButton("下一張");

button.setSize(100, 50);

btnPanel.add(button);

button.addActionListener(new nextHandler());

con.add(btnPanel);

zPanel.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

if(e.getClickCount() == 2)

{

savePointAndImg();

showNext();

}

}

});

finalSetting();

}

private void finalSetting()

{

setTitle("標注工具");

Toolkit kit = Toolkit.getDefaultToolkit();

Dimension screenSize = kit.getScreenSize();

int screenHeight = screenSize.height;

int screenWidth = screenSize.width;

int frameH = getHeight();

int frameW = getWidth();

setLocation((screenWidth - frameW) / 2 - 250,

(screenHeight - frameH) / 2 - 250);

setSize(800, 600);

//setSize(zPanel.getImgWidth()+10, zPanel.getImgHeight()+10);

//setPreferredSize(new Dimension(zPanel.getImgWidth()+100, zPanel.getImgHeight()+100));

//pack();

setVisible(true);

setResizable(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args)

{

new PhotoFrame();

}

}

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結

以上是生活随笔為你收集整理的java 图片标注_怎么用java做一个图像细胞的标注测试的工具?,实现图片放大,框图,定位坐标?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。