Java基於opencv—歸一化
阿新 • • 發佈:2018-09-15
ram image eight 方向 都是 area lock turn 意思
Opencv中提供了resize函數,可以把圖像調整到相同大小
Java中resize函數的聲明,內部調用的都是native方法
public static void resize(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation) { resize_0(src.nativeObj, dst.nativeObj, dsize.width, dsize.height, fx, fy, interpolation); return; } //javadoc: resize(src, dst, dsize) public static void resize(Mat src, Mat dst, Size dsize) { resize_1(src.nativeObj, dst.nativeObj, dsize.width, dsize.height); return; }
解釋下各個參數的意思:
src: 待改變大小的圖像
dst: 輸出的目標圖像
dsize: 目標圖像的尺寸
fx:width方向的縮放比例,如果它是0,那麽它就會按照
(double)dsize.width/src.cols來計算
fy:height方向的縮放比例,如果它是0,那麽它就會按照(double)dsize.height/src.rows來計算
interpolation:這個是指定插值的方式,圖像縮放之後,肯定像素要進行重新計算的,就靠這個參數來指定重新計算像素的方式,有以下幾種:
INTER_NEAREST - 最鄰近插值
INTER_LINEAR - 雙線性插值,如果最後一個參數你不指定,默認使用這種方法
INTER_AREA - 區域插值; 區域插值分為3種情況。圖像放大時類似於線性插值,圖像縮小時可以避免波紋出現。
INTER_CUBIC -基於4x4像素鄰域的3次插值法
INTER_LANCZOS4 - 8x8像素鄰域內的Lanczos插值
實戰演示一下
/** * 把圖片歸一化到相同的大小 * * @param src * Mat矩陣對象 * @return */ public static Mat resize(Mat src) { //src = trimImg(src);//這個函數可以忽略,不產生影響 Mat dst = new Mat(); // 區域插值(INTER_AREA):圖像放大時類似於線性插值,圖像縮小時可以避免波紋出現。 Imgproc.resize(src, dst, dsize, 0, 0, Imgproc.INTER_AREA); return dst; }
效果:
本項目的所有代碼地址:https://github.com/YLDarren/opencvHandleImg
Java基於opencv—歸一化