Triclops圖片格式轉換成OpenCV Mat格式

這裏主要提供了Bumblebee相機Triclops SDK中自定義的Image、TriclopsImage、TriclopsColorImage等圖片格式與OpenCV的Mat格式之間的轉換方法。只要理解了相應的圖片格式的定義和API函數的使用方法,不同格式間的轉換其實很簡單。
因爲博主只用到了Triclops轉到Mat格式,所以Mat格式到Triclops相關格式的轉換方法並未過多研究,如有需要可參考這位大佬的博客:OpenCV IplImage FlyCapture2 Image Conversion 兩種圖像類的相互轉化
Triclops轉Mat:

//TriclopsColorImage to Mat
int convertTriclops2Opencv(TriclopsColorImage& inImage, cv::Mat& cvImage) {
	cv::Mat imageRGBA(inImage.nrows, inImage.ncols, CV_8UC4, inImage.data->value, inImage.rowinc);
	cvtColor(imageRGBA, cvImage, CV_RGBA2BGR);
}
//TriclopsImage to Mat
int convertTriclops2Opencv(TriclopsImage& inImage, cv::Mat& cvImage)
{
	cvImage = cv::Mat(inImage.nrows, inImage.ncols, CV_8UC3, inImage.data, inImage.rowinc);
}
//TriclopsImage16 to Mat
int convertTriclops2Opencv(TriclopsImage16& inImage,cv::Mat& cvImage)//16位灰度圖
{
	cvImage = cv::Mat(inImage.nrows, inImage.ncols, CV_16UC1, inImage.data, inImage.rowinc);
}
//Image to Mat
int convertTriclops2Opencv(FlyCapture2::Image& inImage, cv::Mat& cvImage)
{
	unsigned int rowBytes = (double)inImage.GetReceivedDataSize() / (double)inImage.GetRows();
	cvImage = cv::Mat(inImage.GetRows(), inImage.GetCols(), CV_8UC3, inImage.GetData(), rowBytes);
}

Mat轉Triclops:

//Mat to Image
int convertOpencv2Triclops(cv::Mat& cvImage, FlyCapture2::Image& outImage)
{
	unsigned int imgStride = cvImage.step;
	int sizeImg = cvImage.rows * cvImage.cols * int(cvImage.elemSize());
	outImage.SetDimensions(cvImage.rows, cvImage.cols, imgStride, FlyCapture2::PIXEL_FORMAT_BGR, FlyCapture2::NONE);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章