1.圖像的平滑處理
package com.csdn.linghu.javacvlean03;
import org.bytedeco.javacpp.opencv_core.CvMat;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;
import static org.bytedeco.javacpp.opencv_core.*;
public class SmoothProcesss {
public static void main(String[] args) {
//因爲Mat處理圖像有問題,暫時使用cvMat
CvMat srciInImage = cvLoadImageM("resourecs/xvqing.jpg");
if (srciInImage !=null) {
//顯示待處理圖像
cvShowImage("srcInImage",srciInImage);
//處理圖像
cvSmooth(srciInImage, srciInImage);
CvMat srciOutImage = srciInImage;
//顯示處理完畢的圖像
cvShowImage("srcOutImage", srciOutImage);
//保存處理過的圖像
cvSaveImage("resourecs/smooth.jpg", srciOutImage);
//等待按鍵響應
cvWaitKey(0);
//釋放資源
cvReleaseMat(srciInImage);
//銷燬窗口
cvDestroyWindow("srcInImage");
cvDestroyWindow("srcOutImage");
}
}
}
處理結果如下:
處理前:
處理後:
2、圖像大小減半
package com.csdn.linghu.javacvlean03;
import org.bytedeco.javacpp.opencv_core.IplImage;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;
public class SizeHalf {
public static void main(String[] args) {
//讀取圖像
IplImage srcInImage = cvLoadImage("resourecs/smoothHalf.jpg");
if (srcInImage !=null) {
//顯示未處理的圖像
cvShowImage("srcInImage", srcInImage);
// if (srcInImage.width()%2 !=0&&srcInImage.height()%2 !=0) {
// return;
// }
//爲圖像輸出分配空間
IplImage srcOutImage = cvCreateImage(cvSize(srcInImage.width()/2, srcInImage.height()/2), srcInImage.depth(), srcInImage.nChannels());
//減半
cvPyrDown(srcInImage, srcOutImage);
cvShowImage("srcOutImage", srcOutImage);
//將處理結果保存
cvSaveImage("resourecs/smoothHalfSmall.jpg", srcOutImage);
//等待按鍵
cvWaitKey();
//釋放空間
cvReleaseImage(srcInImage);
cvReleaseImage(srcOutImage);
cvDestroyAllWindows();
}
}
}
處理結果: