andorid版opencv用imwrite把照片儲存到本地時,解決顏色不符問題
阿新 • • 發佈:2019-01-23
opencv提供的imwrite方法是直接把Mat儲存成圖片到本地,會出現顏色與實際不符。
解決:可先把mat轉成bitmap,再儲存圖片到本地即可。
1、用imwrite儲存圖片:(有問題)
imwrite(fileName, rgba);
2、把mat轉bitmap,再儲存:
private void saveImg(Mat rgba) {
//先把mat轉成bitmap
Bitmap mBitmap = null;
//Imgproc.cvtColor(seedsImage, rgba, Imgproc.COLOR_GRAY2RGBA, 4 ); //轉換通道
mBitmap = Bitmap.createBitmap(rgba.cols(), rgba.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(rgba, mBitmap);
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(this.fileName);
mBitmap.compress (Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
Log.d(TAG, "圖片已儲存至本地");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace ();
}
}