Android平台上利用opencv进行图像的边沿检测
来源:互联网 发布:java达内和黑马哪个好 编辑:程序博客网 时间:2024/06/04 17:53
在Android2.3.1模拟器上跑了,如下:
代码如下:
- package cn.netjava.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.graphics.drawable.BitmapDrawable;
- import android.net.Uri;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.Toast;
- public class TestOpencv extends Activity {
- private Button deal_button, recall_button;
- private ImageView imageview;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- double scale = 0.1;
- imageview = (ImageView)this.findViewById(R.id.imageView1);
- Bitmap bm1=BitmapFactory.decodeFile("/sdcard/girl.jpg");
- imageview.setImageBitmap(bm1);
- Mat img = Highgui.imread("/sdcard/girl.jpg",0);
- Size dsize = new Size(img.width()*scale,img.height()*scale);
- Mat img2 = new Mat(dsize,CvType.CV_8SC1);
- Mat img3 = new Mat();
- img.convertTo(img2, CvType.CV_8SC1);
- Imgproc.Canny(img, img3, 123, 250);
- boolean flag=Highgui.imwrite("/sdcard/new.jpg", img3);
- if(flag)
- {
- File f = new File("/sdcard/new.jpg");
- if(f.exists())
- {
- Bitmap bm=BitmapFactory.decodeFile("/sdcard/new.jpg");
- imageview.setImageBitmap(bm);
- }
- }//end if
- else{
- Toast.makeText(TestOpencv.this, "===========图片写入失败!============!!", 3).show();
- }
- }
- }
package cn.netjava.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.graphics.drawable.BitmapDrawable;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class TestOpencv extends Activity {private Button deal_button, recall_button;private ImageView imageview;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);double scale = 0.1;imageview = (ImageView)this.findViewById(R.id.imageView1);Bitmap bm1=BitmapFactory.decodeFile("/sdcard/girl.jpg");imageview.setImageBitmap(bm1);Mat img = Highgui.imread("/sdcard/girl.jpg",0);Size dsize = new Size(img.width()*scale,img.height()*scale);Mat img2 = new Mat(dsize,CvType.CV_8SC1);Mat img3 = new Mat();img.convertTo(img2, CvType.CV_8SC1);Imgproc.Canny(img, img3, 123, 250);boolean flag=Highgui.imwrite("/sdcard/new.jpg", img3);if(flag){File f = new File("/sdcard/new.jpg");if(f.exists()){Bitmap bm=BitmapFactory.decodeFile("/sdcard/new.jpg");imageview.setImageBitmap(bm);}}//end ifelse{Toast.makeText(TestOpencv.this, "===========图片写入失败!============!!", 3).show();}}}
但自己在实践过程中,一个小问题着实费了我一番功夫。
将进行转化的矩阵写到sdcard中,总是写不进去。
弄了很多,多亏一学姐指点,程序对sdcard进行操作时,要在XML文件中进行权限控制。
- <!-- 在SDCard中创建与删除文件权限 -->
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
- <!-- 往SDCard写入数据权限 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在AndroidManifest.xml中加入上面两行代码一切OK啦~
- Android平台上利用opencv进行图像的边沿检测
- Android平台上利用opencv进行图像的边沿检测
- 在android平台上利用opencv进行图像处理之边沿检测
- Android平台上利用opencv进行图像的缩放
- 在Android平台上利用opencv进行图像处理之边缘检测、灰度变换、缩小
- 实现图像的边沿检测算法设计
- 我的OpenCV学习笔记(18):使用Sobel变化和拉普拉斯变换检测图像边沿
- 我的OpenCV学习笔记(17):利用形态学学滤波检测边沿和角点
- android中利用opencv进行图像识别
- FPGA的边沿检测
- FPGA的边沿检测
- FPGA的边沿检测
- FPGA的边沿检测
- 利用图像在水平和垂直方向上的差分运算对图像进行边缘检测
- 利用OpenCV进行图像匹配
- 利用OpenCV的SimpleBlobDetector检测图像的奇异区域(斑点)
- Opencv 利用分割的图像掩膜来完善检测前景
- Python + OpenCV边沿检测(Edge Detection)
- android 中文权限解释
- Android ndk下编译libcurl
- Android 4.0 中的PowerManager(电源管理--休眠唤醒)
- Android 学习 之 TextView结合SpannableString
- void * 的用法
- Android平台上利用opencv进行图像的边沿检测
- live555源代码简介
- 设置临时环境变量 避免多次重复设置或着修改系统环境变量
- hibernate抓取策略
- Linux系统下的多线程编程入门
- eclipse web开发
- Ubuntu下使用VirtualBox时,设置固定分辨率的方法
- 比对沪深300成份股派息情况
- android串口通信