最近开始接触opencv for Android,从网上down了图像的边沿检测的代码。
测试图片:
http://dl.iteye.com/upload/picture/pic/105498/dd5b230c-ceac-3d38-9ad2-8e4215b82a22.jpg
在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();
}
}
}
但自己在实践过程中,一个小问题着实费了我一番功夫。
将进行转化的矩阵写到sdcard中,总是写不进去。
弄了很多,多亏一学姐指点,程序对sdcard进行操作时,要在XML文件中进行权限控制。
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在AndroidManifest.xml中加入上面两行代码一切OK啦~
分享到:
相关推荐
opencv实现对任意图片的边缘检测并绘制出边缘图像
计算机视觉OpenCVAndroid图像操作之统计排序滤波、边缘保留滤波.pdf
本资源里的工程文件是使用安卓利用opencv实现灰度化、二值化、边缘提取等功能。里面包含代码,安装后,点击菜单键进行选择。
多媒体应用:如图像编辑软件、AR/VR应用、游戏开发等,利用OpenCV进行图像和视频处理。 物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有...
用于opencv的水果识别的图像样本,有苹果、香蕉、梨子。
利用OpenCV开源视觉库来获取通过硬件解码的RGB图像,避免了通过调用Android Camera得到图像再转码为RGB格式,提高了系统的实时性。然后对采集的图像进行高斯滤波和形态学变换。最后对预处理后的图像进行Canny取边缘...
对图像进行边缘检测、5. 图像模糊、6.图像翻转、7. 尺度变换、8. 通过Java和OpenCV进行脸部检测、9. 通过Java和OpenCV进行图像拼接 OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器...
跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...
项目中的手势识别与控制功能主要采用 OpenCV 库实现, OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库, 可以运行在Linux, Windows, Android和Mac-OS操作系统上. 它轻量级而且高效—-由一系列 C 函数和少量 ...
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API,提供了Python、...
本书首先详细介绍了多个平台下基于Python的OpenCV安装,继而介绍了计算机视觉应用的基本操作,包括:图像文件的读取与显示,图像处理的基本操作(比如边缘检测等),深度估计与分割,人脸检测与识别,图像的检索,...
C++ 丰富的第三方开源库,如 OpenCV 、 Qt 来制作,实现了打开图像文件、显示图像、存储处理后图像,对图像进行灰度化、二值化(阈值可调)、3×3 均值滤波、3×3 中值滤波、拉普拉斯 4 领域锐化、边缘检测、直方图...
扫描库ScanLibrary是一个基于OpenCV构建的android文档扫描库,使用该应用程序,您将能够选择确切的边缘,并从选定的4个边缘中相应地裁剪文档,并更改裁剪图像的透视图转换。屏幕截图影片在您的项目中使用它git clone...
问题给定票据/发票的图像,任务是执行以下3种操作: 边缘检测,裁切,拉平,裁切图像的增强和压缩。 从处理后的图像中提取文本。 图像到文本转换的置信度得分。发展确保您已安装react-native cli和系统上安装的最新...
一个Flutter插件,用于检测对象的边缘,扫描纸张,检测角,检测矩形。 它允许裁剪检测到的对象图像并返回裁剪图像的路径。 用法: 添加依赖项: 安装前请检查最新版本。 dependencies: flutter: sdk: flutter ...
3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------------------------------------...
盲人导航该应用程序是我的工程论文的一部分,该论文名为...根据平均图像亮度使用自适应最小和最大阈值进行Canny边缘检测-> Min =(1-0.33)* avg,Max =(1 + 0.33)* avg概率霍夫线变换用于线检测。 rho:1.0,theta
交错分块测试,测试图像增加镜像padding,且分块时边缘包含重复部分,每次预测仅保留每块预测结果的中心部分,这么做的原因是图像边缘信息较少,预测效果要差于中心部分 测试时对测试数据使用了横向的镜像增强 ...
它会自动检测对比表面上的纸张边缘。 使用它会自动检测打印在右下角的QR码并立即扫描页面。 检测到页面后,它将补偿图像中的任何透视图,将其调整为90度顶视图并将其保存在设备上的文件夹中。 也可以从任何其他要求...
图像识别是通过使用OpenCV库的一系列步骤来实现的,该过程从“边缘检测”开始,到对Rubik Cube“姿势”(即3D空间中的位置和方向)的估计结束。 “模型”部分只是应用程序状态信息,“视图”部分是一个单独的线程...