`
郑睿9
  • 浏览: 161793 次
  • 性别: Icon_minigender_2
  • 来自: 浙江
社区版块
存档分类
最新评论

Android平台上利用opencv进行图像的缩放

阅读更多

写了个图像缩放的小程序,仅为使用下opencv for Andorid。

 

在Android2.3.1模拟器运行,程序界面:

 

 

点击缩小按钮,界面如下:

 

 

 

代码如下:

 

package cn.netava.opencv;

import java.io.File;

import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class ButtonSizeImage extends Activity {

	private Button deal_button;
	private ImageView imgview;
	private Bitmap bm;
	private boolean flag=false;//判断缩放还是恢复,初始值为false

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 缩放按钮
		deal_button = (Button) this.findViewById(R.id.button1);
		// 存放照片图层
		imgview = (ImageView) this.findViewById(R.id.imageView1);
		// 显示照片
		bm = BitmapFactory.decodeFile("/sdcard/girl.jpg");
		imgview.setImageBitmap(bm);
		
		//匿名内部类,创建缩小事件监听器
		OnClickListener clicklisten=new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(flag){
					deal_button.setText("缩小");
					flag=false;
					// 显示照片
					bm = BitmapFactory.decodeFile("/sdcard/girl.jpg");
					imgview.setImageBitmap(bm);
				}
				else{ 
					deal_button.setText("恢复");
					flag=true;
					double scale = 0.1; // 缩放比例
					Mat img = Highgui.imread("/sdcard/girl.jpg");// 读入图片,将其转换为Mat
					Size dsize = new Size(img.width() * scale, img.height() * scale); // 设置新图片的大小
					Mat img2 = new Mat(dsize, CvType.CV_16S);// 创建一个新的Mat(opencv的矩阵数据类型)
					Imgproc.resize(img, img2,dsize);//调用Imgproc的Resize方法,进行图片缩放
					 if(Highgui.imwrite("/sdcard/girlnew.jpg", img2)){//将图形保存到new.jpg中
							File f = new File("/sdcard/girlnew.jpg");
							if(f.exists())
							{
								bm=BitmapFactory.decodeFile("/sdcard/girlnew.jpg");
								imgview.setImageBitmap(bm);
								
							}
				        }
				        else{
				        	Toast.makeText(ButtonSizeImage.this, "===========图片缩小失败============!!", 3).show();
				        }	
				}
				}
				
			
		};
		//缩放按钮添加点击事件监听器
		deal_button.setOnClickListener(clicklisten);
		
	}
}

 

 

 

 

 

 

 

 

 

分享到:
评论
6 楼 郑睿9 2014-05-24  
sjsmilelife 写道
imread读取不了sdcard 的图片,已经加权限了还是不行,求解答


报什么错?
可能问题:图片路径是否正确?图片是否存放正确?
5 楼 sjsmilelife 2014-05-15  
imread读取不了sdcard 的图片,已经加权限了还是不行,求解答
4 楼 郑睿9 2013-04-09  
ihopethatwell 写道
嗯,可以缩放为指定大小?用那个方法?

可以。
Size dsize = new Size(img.width() * scale, img.height() * scale); // 设置新图片的大小  
3 楼 ihopethatwell 2012-04-25  
嗯,可以缩放为指定大小?用那个方法?
2 楼 郑睿9 2012-01-06  
javafound 写道
用openCV做缩放?大才小用啊


最近刚开始接触opencv这东东,做这个仅供练个小手哈。
1 楼 javafound 2012-01-06  
用openCV做缩放?大才小用啊

相关推荐

Global site tag (gtag.js) - Google Analytics