के साथ opencv2.4.3 का उपयोग करते समय n_Mat मैं एंड्रॉइड में opencv का उपयोग कर रहा हूं। लेकिन जब मैं अपने कोड में मैट() जोड़ रहा हूं तो मेरा एप्लिकेशन अनपेक्षित रूप से लॉन्च के बाद बंद हो जाता है। मेरी त्रुटि लॉग के रूप में नीचे है:असंतुष्ट लिंक्स त्रुटि: एंड्रॉइड 4.0
FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: n_Mat
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:441)
at com.example.imagepro.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)`
मेरी कोड
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.android.Utils;
import org.opencv.imgproc.Imgproc;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
final String TAG = "Hello World";
Mat imgToProcess;
private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
// Create and set View
setContentView(R.layout.activity_main);
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
Log.i(TAG, "Trying to load OpenCV library");
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mOpenCVCallBack))
{
Log.e(TAG, "Cannot connect to OpenCV Manager");
}
else{ Log.i(TAG, "opencv successfully added"); }
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String path = Environment.getExternalStorageDirectory()+ "/Koala.jpg"; // get image from sd card
File imgFile = new File(path);
View v = null;
if(imgFile.exists())
{
Bitmap myBitmap = BitmapFactory.decodeFile(path);
ImageView myImage = (ImageView) findViewById(R.id.imageView);
myImage.setImageBitmap(myBitmap);
Log.i(TAG, "opencv successfull 1");
Mat imgToProcess = new Mat();
Mat newmat = new Mat();
Utils.bitmapToMat(myBitmap, imgToProcess);
Imgproc.cvtColor(imgToProcess, newmat, Imgproc.COLOR_RGB2GRAY);
Bitmap outImage = Bitmap.createBitmap(newmat.rows(),newmat.cols(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(newmat, outImage);
myImage.setImageBitmap(outImage);
}
}
}
मैं stackoverflow पर उपलब्ध कराई गई अन्य समाधान की कोशिश की है, लेकिन उनमें से कोई भी मेरे लिए काम किया। मैंने पहले ही libopencv_java.so और libopencv_info.so को अपने/libs फ़ोल्डर में F: \ OpenCV-2.4.3.2-android-sdk \ sdk \ native \ libs \ armeabi-v7a से कॉपी किया है लेकिन यह त्रुटि एक ही है।
कृपया मदद करें। अग्रिम :)
प्रश्न [यहां] देखें (http://stackoverflow.com/questions/11614227/android-unsatisfiedlinkerror-with-opencv-2-4-2)। मुझे एक ही समस्या हो रही थी और लाइन को समस्या को अलग कर दिया गया है: Mat m = new Mat(); मैट एम = शून्य; और मैट एम; काम करता है लेकिन मुझे उनकी आवश्यकता नहीं है। वैसे भी, [लिंक] आज़माएं (http://stackoverflow.com/questions/11614227/android-unsatisfiedlinkerror-with-opencv-2-4-2) मैंने आपको दिया। यह मेरे लिए काम किया। –
आपकी प्रतिक्रिया के लिए धन्यवाद ... लेकिन मैंने कोशिश की। मैंने ओपनसीवी लिब को जोड़ा है और इसे भी शुरू किया है। लेकिन कल मैंने इस समस्या को इतनी डिबगिंग के बाद हल किया ... समस्या यह थी कि मैं अपने ओपनसीवी आश्रित समारोह को ऑनक्रेट() में बुला रहा था। लेकिन मैंने इसे वहां से हटा दिया और इसे setcontentview() के बाद onmanagerconnected() में बुलाया, यह काम करना शुरू कर दिया। मुझे लगता है कि onmanagerconnected() में बनाने के बाद opencv lib प्रारंभ होता है। मैं इस क्षेत्र में नया था इसलिए उसे नहीं पता था। – AnShU
@AnShU, क्या आप अपना उत्तर पोस्ट कर सकते हैं और इसे स्वयं स्वीकार कर सकते हैं? मैं वह कोड देखना चाहता हूं जहां आपने अपना प्रारंभिक कोड रखा था। –