學習javacv之三:圖像的平滑處理、大小減半

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();
			
	}
}
}

處理結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章