在Basler C# sample code的範例中,
經常看到影像資料來源為Byte[] buffer格式,
如何將byte array轉到OpenCV格式 Mat, 是第一個遇到的問題.
但更麻煩的Basler支援PixelFormat千奇百種, 每種相機又支援項目也不同
如何輕鬆轉換Mat且為自己想要的Color space, 這是第二個問題
以前笨笨的, 都自己寫轉格式的程式碼,
後來發現其實OpenCV已經都支援大部分的影像格式,
所以秉持不重新造輪的精神, 先來好好研究一番囉!
這樣有幾個好處:
1. 不用擔心自己寫的有無問題
2. Time-To-Market 加速產品開發速度
3. 可以專心在後面影像處理
================================================
測試1:
1. 用Bitmap去接收imageBuffer(1-D byte array)
2. 用Bitmap初始化一個灰階Image<Gray, byte>
3. 創建一個彩色Image<Rgb, byte> imgRgb
4. 用CvColor將資料進行轉換, BayerRg 轉成 Rgb 格式
附註: BitmapFactory 是在Pylon C# 範例資料夾 BitmapFoctory.cs 所提供
測試過, 還真的可以成功顯示彩色影像, 好開心唷!
private void GetBuffer(Byte[] imageBuffer, long width, long height, int camIndex)
{
int w = (int)width;
int h = (int)height;
Bitmap bmp;
BitmapFactory.CreateBitmap(out bmp, w, h, false);
BitmapFactory.UpdateBitmap(bmp, imageBuffer, w, h, false);
Image<Gray, byte> img = new Image<Gray, byte>(bmp);
Image<Rgb, byte> imgRgb = new Image<Rgb, byte>(img.Size);
CvInvoke.CvtColor(img, imgRgb, ColorConversion.BayerRg2Rgb);
CvInvoke.Imshow(camIndex.ToString(), imgRgb);
}
================================================
測試2: 相較測試1更簡單一些, 省略bitmap中介
1. 創建一個灰階Image<Gray, byte>, 總大小和imageBuffer一致
2. img.Bytes = imageBuffer <---- 這一行就是指向imageBuffer, 連複製一份都省了
3. 創建一個彩色Image<Rgb, byte> imgRgb
4. 用CvColor將資料進行轉換, BayerRg 轉成 Rgb 格式
private void GetBuffer(Byte[] imageBuffer, long width, long height, int camIndex)
{
int w = (int)width;
int h = (int)height;
Image<Gray, byte> img = new Image<Gray, byte>(w, h);
img.Bytes = imageBuffer;
Image<Rgb, byte> imgRgb = new Image<Rgb, byte>(img.Size);
CvInvoke.CvtColor(img, imgRgb, ColorConversion.BayerRg2Rgb);
CvInvoke.Imshow(camIndex.ToString(), imgRgb);
}
================================================
PylonDev.cs <-- 封裝兩支 PylonDev 影像擷取
public 方法有 Open() Start() Grab() Stop()
CameraDev.cs <—兩支USB攝影機 同步 預覽/錄影/播放
接下來是如何讓CameraDev也支援PyloneDev影像來源,
而不是一般的USB攝影機
換句話說, 讓Basler相機繼承 原本 同步 預覽/錄影/播放 功能
public Mat GetBufferMat(int camIndex)
{
return m_img[camIndex].Mat;
}
同時, 如果未來要讓CameraDev可以支援多種影像來源, 必須增加一個屬性設定
方便切換各家廠牌的攝影機
留言列表