當前我試圖將拜耳RGGB數據轉換爲iplimage。 我認爲cvtColor可能會工作,但它需要「墊」而不是iplimage。將拜耳RGGB轉換爲CV iplimage(RGB)
cvtColor(img->imageData, tmpimageData, CV_BayerBG2BGR, 0);
是否有解決方法,也許您可以將Bayer RGGB轉換爲mat,然後將mat轉換爲iplimage?我真的堅持這個問題,任何幫助非常感謝!
當前我試圖將拜耳RGGB數據轉換爲iplimage。 我認爲cvtColor可能會工作,但它需要「墊」而不是iplimage。將拜耳RGGB轉換爲CV iplimage(RGB)
cvtColor(img->imageData, tmpimageData, CV_BayerBG2BGR, 0);
是否有解決方法,也許您可以將Bayer RGGB轉換爲mat,然後將mat轉換爲iplimage?我真的堅持這個問題,任何幫助非常感謝!
OpenCV可以輕鬆地在Mat和Iplimage之間進行轉換。 例如,如果img
是IplImage*
:
Mat m(img);
Mat result;
cvtColor(m, result, CV_BayerBG2BGR, 0);
IplImage ipl_result = IplImage(result);
見Mat::Mat(const IplImage* img, bool copyData=false)和Mat::operator IplImage()
可惜我沒弄明白爲什麼cvtColor
沒有工作,但儘管如此,我發現一個,爲什麼轉換BayerRGGB一起RGB我的SDK。
事實證明,我正在使用的矩陣視覺sdk提供了一個內置的解決方案。 我需要做的第一件事就是將PixelFormat
更改爲BayerRG8以獲得8位圖像分辨率。之後,通過將idpfRGB888Packed寫入ImageDestination.pixelFormat
,我設法將Bayer RGGB解碼爲RGB。
此外,我能夠以非常原始的方式完成我的轉換,這也完成了工作,但需要太多的CPU時間。 我打了我的imageData
陣列,並拿出每第四個像素。
for (int count_small = 0, count_large = 0; count_large < 1000; count_small += 3, count_large +=4)
{
dest[count_small] = source[count_large];
dest[count_small+1] = source[count_large+1];
dest[count_small+2] = source[count_large+2];
}
不乾淨,但它完成了工作。
那麼這是相當有用^^ 我想我可以再次使用img,並且不需要創建新的IplImage「ipl_result」! – Guntram