我正在嘗試使用OpenCV Java API創建一個輔助函數來處理輸入圖像並返回輸出字節數組。輸入圖像是保存在電腦中的jpg文件。輸入和輸出圖像使用Swing在Java UI中顯示。將OpenCV Mat對象轉換爲BufferedImage
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// Load image from file
Mat rgba = Highgui.imread(filePath);
Imgproc.cvtColor(rgba, rgba, Imgproc.COLOR_RGB2GRAY, 0);
// Convert back to byte[] and return
byte[] return_buff = new byte[(int) (rgba.total() * rgba.channels())];
rgba.get(0, 0, return_buff);
return return_buff;
當return_buff
被返回並轉換爲BufferedImage時,我返回NULL。當我註釋掉Imgproc.cvtColor
函數時,return_buff
已正確轉換爲我可以顯示的BufferedImage。看起來像Imgproc.cvtColor
正在返回一個我無法在Java中顯示的Mat對象。
這裏是我的代碼從字節[]轉換設置爲BufferedImage:
InputStream in = new ByteArrayInputStream(inputByteArray);
BufferedImage outputImage = ImageIO.read(in);
在上面的代碼中,outputImage是NULL
沒有任何人有任何建議或想法?