我正在研究如何在不使用OpenCV的直接轉換函數的情況下將Bayer模式轉換爲RGB圖像。我已經使用了雙線性插值並使其運行,但我想通過使用Freeman方法來提高質量。該方法需要中值濾波器。 OpenCV具有這樣的中值布爾函數。但我無法使用此功能。當我應用medianBlur的cv :: Mat類型爲CV_8UC1時,它可以工作,但如果它是CV_32S類型,那麼它不起作用。 這確實不工作:當Mat是CV_32S類型時,OpenCV MedianBlur函數崩潰
redGreenMedian.create(input.size(), CV_32S);
blueGreenMedian.create(input.size(), CV_32S);
blueMinusGreen.create(input.size(), CV_32S);
redMinusGreen.create(input.size(), CV_32S);
for(int i = 1; i <= 3; i += 2)
{
cv::medianBlur(redMinusGreen, redGreenMedian, i);
cv::medianBlur(blueMinusGreen, blueGreenMedian, i);
}
如果我改變這一切CV_32S到CV_8UC1然後它工作。在調試時,我發現它在第二次迭代中崩潰,而不是第一次崩潰。但是,我需要它運行兩個迭代。這確實不工作單獨寫的時候也:
cv::medianBlur(redMinusGreen, redGreenMedian, 3);
順便說一句,我沒有使用CV_32S,但我需要存儲在矩陣負數的能力。
注意:我已經嘗試使矩陣中的所有數字爲正,然後使用medianBlur,但它仍然無效。
所有幫助表示讚賞。提前致謝。
yup,段錯誤不處理輸入是不正常的!由於'medianBlur'函數,我只看到崩潰。 – dashesy