OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2410|回复: 1

在Android平台上使用opencv2.4.10读取手机本地图像失败,size=0x0

[复制链接]
发表于 2015-12-4 14:39:51 | 显示全部楼层 |阅读模式
在Android上写了一个测试程序,读取手机本地的一张图片,在界面上显示出图片的size,但是读取后显示的一直是size = 0x0;我发现在stackoverflow上也有好多人问这个问题,但是底下的回答大都不尽如人意,有没有在Android上使用过opencv的能够答疑解惑。ps:我使用的是opencv2.4.10,代码如下:
package com.example.test_opencv;

import java.io.File;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {
        Button button;
        EditText text;
        private static final String TAG = "Sample:uzzle15::Activity";
        private BaseLoaderCallback mBaseLoaderCallback = new BaseLoaderCallback(this) {
                @Override
                public void onManagerConnected(int status) {
                        // TODO Auto-generated method stub
                        switch (status) {
                        case BaseLoaderCallback.SUCCESS:
                                break;
                        default:
                                super.onManagerConnected(status);
                                break;
                        }
                }
        };

        private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
                @Override
                public void onManagerConnected(int status) {
                        switch (status) {
                        case LoaderCallbackInterface.SUCCESS: {
                                Log.i(TAG, "OpenCV loaded successfully");
                        }
                                break;
                        default: {
                                super.onManagerConnected(status);
                        }
                                break;
                        }
                }
        };

        @Override
        public void onResume() {
                super.onResume();
                OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this,
                                mLoaderCallback);
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                button = (Button) findViewById(R.id.button1);
                text = (EditText) findViewById(R.id.editText1);
                try {
            System.loadLibrary("opencv_java3");
            } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
            }
                button.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View arg0) {
                                String number = method1(); // method返回匹配成功点数
                                text.setText(number);
                                System.out.println(number);
                        }
                });
        }

        public String method1() {
                String path = Environment.getExternalStorageDirectory().getAbsolutePath();
                String imagePath = path + "/rice.png";
                System.out.println(imagePath);

                File imgFile = new File(imagePath);
                if (imgFile.exists()) { // 检测文件是否存在
                        System.out.println("File exit!");
                } else {
                        System.out.println("File doesn't exit!");
                }
                Mat image = new Mat();
                image = Highgui.imread(imagePath);// 读取图像
                if (image.empty()) {//检测图像是否为空
                        System.out.println("empty");
                }
                String size = image.size().toString();//获取图像矩阵大小
                System.out.println(imagePath);
                return size;
        }
}


回复

使用道具 举报

发表于 2016-1-4 17:48:05 | 显示全部楼层
Mat image = new Mat();
                image = Highgui.imread(imagePath);// 读取图像
                if (image.empty()) {//检测图像是否为空
                        System.out.println("empty");
                }
                String size = image.size().toString();//获取图像矩阵大小
                System.out.println(imagePath);
                return size;
        }这一部分好奇怪,明明知道ImageS是Mat,为什么不直接System.out.println(image.size())啦???;还有,你确定能正确的读出文件吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-5 23:48 , Processed in 0.010111 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表