カテゴリ |
 |
工業用のカラーカメラで画像を撮影しても、ほとんどの場合、カメラからはBayerと呼ばれるグレースケールの画像としてデータが出力されてます。
 |
 |
カラーデータ |
Bayerデータ |
そのため、カラー画像を取得するには、このBayerデータからカラーデータへ変換する必要があります。
変換には、OpenCVのcvtColor関数を用います。
以下は、snap(カメラから1枚だけ画像を撮影)を行い、取得したBayerデータからカラーデータへ変換するサンプルです。
import acapy
import cv2
# AcaPyクラスのインスタンス
# CameraLink, CoaXPressボードのBoardID=0, カメラCh=1の場合
capture = acapy.AcaPy(board_id = 0, ch = 1)
# AVALDATA製GigEカメラの場合
#capture = acapy.AcaPy("GigE")
# 画像入力ボードの設定
# GigEカメラのとき、load_inifile()は不要です。
capture.load_inifile("./AreaSensor_mono.ini")
# 画像取込
ret, frame = capture.snap()
# Bayer -> カラー変換 frame_color = cv2.cvtColor(frame, cv2.COLOR_BayerBGGR2BGR)
# 画像表示(Bayerデータ)
cv2.imshow("Image", frame) # 画像表示(カラーデータ) cv2.imshow("ImageColor", frame_color)
cv2.waitKey()
# 解放 capture.release()
|
cvtColor関数の第二引数には、
cv2.COLOR_BayerBGGR2BGR, cv2.COLOR_BayerGBRG2BGR,
cv2.COLOR_BayerRGGB2BGR, cv2.COLOR_BayerGRBG2BGR
のいづれかの値を指定する必要があります。
この値は、使用するカメラやカメラの撮影位置(ROI、センサのどの部分を使って撮影するか?)によって異なります。