※画面を横にするとパソコン版のレイアウトでご覧いただけます。
 正しく表示されていない場合は横向きでご覧ください。

neoAPI for Python

neoAPI for Python

Baumer社よりついにPython対応の公式ライブラリがリリースされました。


その名も neoAPI

Pythonでのコーディングを意識した新しいAPIを採用し、Python用のライブラリだけでなくC++やC#のライブラリも提供されます。

コーディング方法が極限まで簡略化されているので、たった3行のプログラミングでカメラの初期化からデータキャプチャまでを実行可能です。

現行のBaumerGAPIライブラリで同じことを行うのに比べればその差は歴然。

カメラを受け取ってからすぐにカメラデータの取得ができるので、素早く実験を進める事が可能です。

neoAPIを使えばこんなにスリムに!!
#カメラの初期化と1枚画像キャプチャ
camera = neoapi.Cam()
camera.Connect()
buffer = camera.GetImage()
//カメラの初期化と1枚画像キャプチャ
NeoAPI::Cam camera = NeoAPI::Cam();
camera.Connect();
NeoAPI::Image buffer = camera.GetImage();          
//カメラの初期化と1枚画像キャプチャ
NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect();
NeoAPI.Image buffer = camera.GetImage();    

各種カメラ設定の変更も専用プロパティを選んで値の取得や変更を行うだけの簡単仕様。
煩わしいバッファ管理なども意識する必要はなくバックエンドでライブラリが処理してくれます。

#設定値の取得と変更
#ホワイトバランス調整可能なら実行
if(camera.HasFeature("BalanceWhiteAuto")) :
	camera.f.BalanceWhiteAuto.SetString("Once")
#露光時間 = 32ms
camera.f.ExposureTime.value = 32000
print("ExposureTime: %dus" %camera.f.ExposureTime.value)
#トリガ制御 = On
camera.f.TriggerMode.SetString("On")
print("TriggerMode: %s" %camera.f.TriggerMode.GetString())
#ソフトトリガ発行
camera.f.TriggerSoftware.Execute()
//設定値の取得と変更
//ホワイトバランス調整可能なら実行
if(camera.HasFeature("BalanceWhiteAuto"))
{
	camera.f.BalanceWhiteAuto.SetString("Once");
}
//露光時間 = 32ms
camera.f.ExposureTime.Set(32000);
std::cout << "ExposureTime: " << camera.f.ExposureTime.Get() << "us" << std::endl);
//トリガ制御 = On
camera.f.TriggerMode.SetString("On");
std::cout << "TriggerMode: " << camera.f.TriggerMode.GetString() << std::endl);
//ソフトトリガ発行
camera.f.TriggerSoftware.Execute();
//設定値の取得と変更
//ホワイトバランス調整可能なら実行
if(camera.HasFeature("BalanceWhiteAuto"))
{
	camera.f.BalanceWhiteAuto.SetString("Once");
}
//露光時間 = 32ms
camera.f.ExposureTime.value = 32000;
System.Console.WriteLine("ExposureTime: {0}us", camera.f.ExposureTime.value);
//トリガ制御 = On
camera.f.TriggerMode.SetString("On");
System.Console.WriteLine("TriggerMode: {0}", camera.f.TriggerMode.GetString());
//ソフトトリガ発行
camera.f.TriggerSoftware.Execute();

neoAPIならOpenCVでのデータ処理がより便利に

データキャプチャまでが簡略化されているのでOpenCVなど各種サードパーティーライブラリとの連携もよりスムーズで素早く行えます。
OpenCVならMatバッファに取得したデータを引き渡すだけ。
後はMatバッファへ各種OpenCVのデータ処理関数を実行するだけで、たった数行でOpenCVを使った画像データの処理や表示、保存が可能です。

#Mono8データライブ表示の場合
#opencv-python利用
camera = neoapi.Cam()
camera.Connect()
while cv2.waitKey(1) != 27 :
	buffer = camera.GetImage()
	mat_buffer = buffer.GetNPArray().reshape(buffer.GetHeight(), buffer.GetWidth())
	cv2.imshow("", mat_buffer)
//Mono8データライブ表示の場合
//OpenCV使用
NeoAPI::Cam camera = NeoAPI::Cam();
camera.Connect();
while(true)
{
	NeoAPI::Image buffer = camera.GetImage()
	cv::Mat mat_buffer(	(int)buffer.GetHeight(), (int)buffer.GetWidth(),
					CV_8UC1, buffer.GetImageData(), cv::Mat::AUTO_STEP);
	cv2::imshow("", mat_buffer);
	if(cv2::waitKey(1) == 27)
	{
		break;
	}
}
//Mono8データライブ表示の場合
//OpenCVSharp使用
NeoAPI.Cam camera = NeoAPI.Cam();
camera.Connect();
while(true)
{
	using(NeoAPI.Image buffer = camera.GetImage())
	{	
		var mat_buffer = new OpenCvSharp.Mat(	(int)buffer.GetHeight(), (int)buffer.GetWidth(),
										OpenCvSharp.MatType.CV_8UC1, buffer.GetImageData());
		Cv2.ImShow("", mat_buffer);
	}
	if(Cv2.WaitKey(1) == 27)
	{
		break;
	}
}

     

既にあるBaumerGAPIライブラリとの違いは?

neoAPIは初期のカメラ評価などでより素早く制御ソフトを開発し、基礎実験などをスピーディーに行なうために生まれたライブラリのためBaumerGAPIに比べて利用できない機能があります。
例えば以下のようなBaumerGAPI提供の機能はneoAPIでは利用できません。

Statisticsステータス情報 マルチキャスト制御
ActionCommandトリガ制御 偏光データの生成
シェーディング補正 ヒストグラム算出

従って複雑かつ堅牢なシステム構築を検討される場合はBaumerGAPIでの構築が好ましく、
Pythonを利用したい場合や手っ取り早く画像データの取得部分を構築したい場合にはneoAPIが適しています。

現在、neoAPIで構築したプログラムをBaumerGAPIのプログラムに変換するツールなどはありません。
そのためneoAPIで作成したコード部分を0からBaumerGAPIのAPIで書き直す必要があります。

プログラム作成の前にどちらが適しているか充分考えた上で使用ライブラリを選択してください。

ページ上部へ戻る