我正在运行一个用于canny边缘检测的java脚本,当我在程序中的任何地方使用关键字Mat,甚至其他Mat变量时,应用程序都没有加载。我该如何解决这个问题。
我使用的代码如下。
public class MainActivity extends Activity {
Mat m;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MediaPlayer mpButtonClick = MediaPlayer.create(this, R.raw.button_click);
final String TAG = "OCVSample::Activity";
BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
m=new Mat();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
ImageView imageSource=null,imageAfter = null;
Bitmap source=null,result = null;
imageSource = (ImageView)findViewById(R.id.imageView1);
source=BitmapFactory.decodeResource(getResources(), R.drawable.strips1);
Mat matSource = null;
// Handle initialization error
Utils.bitmapToMat(source, matSource);
Mat matResult = null;
Imgproc.Canny(matSource, matResult, 80, 90);
Utils.matToBitmap(matResult,result);
imageAfter.setImageBitmap(result);
答案 0 :(得分:0)
你只能在 BaseLoaderCallback完成后使用opencv代码(并加载了dll' s / so')
所以,在onCreate中执行Canny代码不会起作用(这太早了)。
在LoaderCallbackInterface.SUCCESS之后移动它:或者移动到onCameraViewStarted()或类似的
(顺便说一句,在你的可怕的格式代码上应用了一些工作之后,这才变得明显......)