JavaでOpenCVを動かして遊んでいたら、
getClass().getResource("ファイル名").getPath()
のようにしてファイルのパスを取得しているサンプルがあった。これ何だろうなーと思って調べてみた。
Mat image = Highgui.imread("
lena.png");
でいいんじゃないの?と思った。しかし、上のように直接ファイルパスを書いてしまうと、このファイルパスはカレントディレクトリに依存してしまう。
よって、想定外のディレクトリからプログラムを実行する(※)と、ファイルを見つけることが出来なくなってしまう。
※一個上のディレクトリ階層からプログラムを実行する場合など。より実用的な例としては、jarにまとめて実行したり、サーブレット上でプログラムを実行したりする場合。
これに対して、
Mat image = Highgui.imread(
getClass().getResource("/lena.png").getPath());
のようにしておけば、クラスパスからリソースが検索されるため、カレントディレクトリには影響しない。
0 件のコメント:
コメントを投稿