株式会社アルゴ-日本にない技術を世界から-

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

カメラ 

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;
	}
}

今すぐ試したい方に

Baumer製品をお持ちの方は下記Python用ライブラリ(Windows版)でneoAPIの凄さを体験できます。
これまでにない簡単プログラミングを今すぐ試してみましょう。
(その他のC++およびC#用ライブラリやARM向けライブラリ、サンプルコード集などは
Baumerユーザー用ダウンロードページで配布しておりますのでお問合せください。)

neoAPIダウンロード

     

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

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

コールバックによるデータ処理 カメラの内部イベント監視の処理
PnPイベントによる接続/切断検知 トレースログ生成
カウンタ機能(データ処理成否のチェック) Chunkの処理
マルチキャスト制御 ActionCommandトリガ制御
偏光データの生成 カラー補正
シャープネス補正 シェーディング補正
ヒストグラム算出 ...

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

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

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

ページ上部へ戻る