質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1672閲覧

Javaでのフリーハンド・オーバーレイ

junzo

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/09/13 06:39

”FreehandRoi.java”を使って、JAVAで単独に画像上でフリーハンドでオーバーレイを書いて表示するために、以下のプログラムを作成しましたが、エラーは出ないがマウス操作ができずに終了してしまいました。メインメゾット上でどのような指示をだせば動くのかわかりません。アドバイスをお願いします。

***********************************************************

java

1//画像上にフリーハンドでオーバーレイを書くために私が作成したプログラムは以下です。 2package fh; 3import ij.IJ; 4import ij.ImagePlus; 5import ij.gui.FreehandRoi; 6import ij.io.FileOpener; 7import ij.io.Opener; 8// 9public class Freehandtest { 10 public static void main(String[] args) { 11 12 //デイスクに保存されている画像ファイルを開く。 13 ij.io.FileInfo fi = new ij.io.FileInfo(); 14 FileOpener fo = new FileOpener(fi); 15 Opener on = new Opener(); 16 on.open(); 17 fo.open(); 18 //フルーハンドで線を描く。 19 ImagePlus img = IJ.getImage(); 20 int sx = 0; 21 int sy = 0; 22 FreehandRoi fr = new FreehandRoi(sx, sy, img); 23 fr.grow(sx,sy); 24 } 25}

********************************************************

java

1参照したFreehandRoi.java プログラムコードです。 2 3package ij.gui; 4 5import java.awt.*; 6import java.awt.image.*; 7import ij.*; 8 9/** Freehand region of interest or freehand line of interest*/ 10public class FreehandRoi extends PolygonRoi { 11 12 public FreehandRoi(int sx, int sy, ImagePlus imp) { 13 super(sx, sy, imp); 14 if (Toolbar.getToolId()==Toolbar.FREEROI) 15 type = FREEROI; 16 else 17 type = FREELINE; 18 if (nPoints==2) nPoints--; 19 } 20 21 protected void grow(int sx, int sy) { 22 if (subPixelResolution() && xpf!=null) { 23 growFloat(sx, sy); 24 return; 25 } 26 int ox = ic.offScreenX(sx); 27 int oy = ic.offScreenY(sy); 28 if (ox<0) ox = 0; 29 if (oy<0) oy = 0; 30 if (ox>xMax) ox = xMax; 31 if (oy>yMax) oy = yMax; 32 if (ox!=xp[nPoints-1]+x || oy!=yp[nPoints-1]+y) { 33 xp[nPoints] = ox-x; 34 yp[nPoints] = oy-y; 35 nPoints++; 36 if (nPoints==xp.length) 37 enlargeArrays(); 38 drawLine(); 39 } 40 } 41 42 private void growFloat(int sx, int sy) { 43 double ox = ic.offScreenXD(sx); 44 double oy = ic.offScreenYD(sy); 45 if (ox<0.0) ox = 0.0; 46 if (oy<0.0) oy = 0.0; 47 if (ox>xMax) ox = xMax; 48 if (oy>yMax) oy = yMax; 49 double xbase = getXBase(); 50 double ybase = getYBase(); 51 if (ox!=xpf[nPoints-1]+xbase || oy!=ypf[nPoints-1]+ybase) { 52 xpf[nPoints] = (float)(ox-xbase); 53 ypf[nPoints] = (float)(oy-ybase); 54 nPoints++; 55 if (nPoints==xpf.length) 56 enlargeArrays(); 57 drawLine(); 58 } 59 } 60 61 void drawLine() { 62 int x1, y1, x2, y2; 63 if (xpf!=null) { 64 x1 = (int)xpf[nPoints-2]+x; 65 y1 = (int)ypf[nPoints-2]+y; 66 x2 = (int)xpf[nPoints-1]+x; 67 y2 = (int)ypf[nPoints-1]+y; 68 } else { 69 x1 = xp[nPoints-2]+x; 70 y1 = yp[nPoints-2]+y; 71 x2 = xp[nPoints-1]+x; 72 y2 = yp[nPoints-1]+y; 73 } 74 int xmin = Math.min(x1, x2); 75 int xmax = Math.max(x1, x2); 76 int ymin = Math.min(y1, y2); 77 int ymax = Math.max(y1, y2); 78 int margin = 4; 79 if (lineWidth>margin && isLine()) 80 margin = lineWidth; 81 if (ic!=null) { 82 double mag = ic.getMagnification(); 83 if (mag<1.0) margin = (int)(margin/mag); 84 } 85 imp.draw(xmin-margin, ymin-margin, (xmax-xmin)+margin*2, (ymax-ymin)+margin*2); 86 } 87 88 protected void handleMouseUp(int screenX, int screenY) { 89 if (state==CONSTRUCTING) { 90 addOffset(); 91 finishPolygon(); 92 } 93 state = NORMAL; 94 } 95 96}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2015/09/13 07:24

Windows7 + Java8 + ImageJの最新版(ij149.zip)で試してみましたが、最後の行がコンパイルが通らない(コメントアウトした)以外は動作しているように見えます。 JavaやImageJのバージョン、どのような環境で動作させたのかなどを教えていただけますか?
guest

回答1

0

Windows7 + Java8 + ImageJの最新版(ij149.zip)で試してみましたが、最後の行がコンパイルが通らない(コメントアウトした)以外は動作しているように見えます。

JavaやImageJのバージョンなどが違うのかも知れません。
新しいバージョンで試してみてはいかがでしょうか。

投稿2015/09/18 06:42

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問