ImageJ/Fijiでフリーハンドで書いたROIの座標リストを取得したい(適当メモ)
Python Scriptingで
roi = IJ.getImage().getRoi()
x0 = roi.getBoundingRect().getX()
y0 = roi.getBoundingRect().getY()
x = roi.getXCoordinates()
y = roi.getYCoordinates()
length = roi.getNCoordinates()
for i in range(length):
print x0 + x[i], y0 + y[i]
print length
これでROIの頂点の座標が取得できる?でも、今回はROIの線が通ったピクセルの座標を全て取得したいのでこれでは駄目。
そこで、以下の方法を試す。
ROI managerにROIを登録。その後、同じ大きさの黒い画像を作成し、ROI managerに登録したROIを呼び出して1pixelの白線でDraw。Python Scriptingで、
imp = IJ.getImage()
ip = imp.getProcessor().convertToFloat()
pixels = ip.getPixels()
on = filter(lambda i: pixels[i] > 1, xrange(len(pixels)))
width = imp.width
x = map(lambda i: i % width, on)
y = map(lambda i: i / width, on)
for i in range(len(on)):
print x[i], y[i]
print len(x), len(y)
でOKのはず?もうちょっと確認が必要。
Macでopencv
Macでopencvを使えるようにするまでのいろいろを備忘録代わりに。
正しいかどうかはあんまり自信ないので。
環境:
MacOS 10.7 (Lion)
Macports (2.1.2)
python (2.7.3), Numpy (1.6.2) < Macportsでinstall
Macportsでopencvをinstall。pythonからopencvを使うためにはNumpyがinstallされてる必要がある。今回はすでに入っているのでパス。ターミナルから
>sudo port -d install opencv +python27
python2.7で使うためには+python27のoptionが必要。ちなみにこれでinstallされたopencvはMacportsでinstallしたpythonでは使えるけどこのままではOS付属のpythonにはimportできないぽい。
今回installされたのはopencv2.4.2(現時点で最新のは2.4.3)。
当初、Xcode4.5を使ってテストしてたんだけど、なぜかサンプルコードのビルドに失敗してしまった。結局、Xcode4.2をDeveloper siteから落としてきて入れ直したらビルドできたんだけど原因は不明。
New project > Command Line Tool > 適当に名前を付けてTypeをC++に
Build settingのvalid architecturesからi386を消してx86_64のみに。header search pathに/opt/local/includeを入力。
次にBuild phasesのLink binary with libraryの追加ボタンを押してAdd otherからlibopencvを検索してlibopencv_core2.4.2.dylib, libopencv_highgui.dylib, libopencv_imgproc.dylibを追加。
そしてmain.cppに
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
VideoCapture capture(0);
Mat frame;
while (waitKey(1) != 'q') {
capture >> frame;
imshow("test", frame);
}
return 0;
}
これでビルドするとiSightのカメラが起動する。qで停止。
次、python。エディタでtest.pyに以下のように記述。
import cv2
cap = cv2.VideoCapture(0)
while cv2.waitKey(1) != 'q':
success, img = cap.read()
cv2.imshow("test", img)
これをターミナル上で
>python2.7 test.py
(Macportsのpythonを使えるように事前に/opt/local/binにパスを通しておくこと。)
これでiSightのカメラ起動したけど、qで停止しない。原因はまだ不明。