Android स्टूडियो में OpenCV


140

मैं एंड्रॉइड स्टूडियो के साथ अपने ऐप में OpenCV लाइब्रेरी का उपयोग करना चाहता हूं। मैंने यहां पाए गए निर्देशों का पालन किया लेकिन मुझे त्रुटि मिली

'डिफ़ॉल्ट' नाम के साथ कॉन्फ़िगरेशन नहीं मिला

क्या गलत हो सकता है?

मैं 2.2.1 के साथ एंड्रॉइड स्टूडियो 1.0 का उपयोग करता हूं।


1
अब हम एंड्रॉइड स्टूडियो के साथ मॉड्यूल आयात कर सकते हैं और कदम बहुत सरल हो सकते हैं। क्या आप इस stackoverflow.com/a/27356635/1180117
किरण

धन्यवाद, यह काम करता है। इसे उत्तर के रूप में लिखिए तब मैं इसे स्वीकार कर सकता हूं।
बार्टोज़ बियाल्की

@BartoszBialecki @Kiran, मैंने इसे नंबर 4 पर रखा है, मुझे अपनी nativeनिर्देशिका के तहत निर्देशिका नहीं मिल sdk रही है। क्या मुझे कुछ याद आ रहा है?
रोमांटिक इलेक्ट्रान

1
@RomanticElectron में आपको OpenCV लाइब्रेरी के sdk से natvie डायरेक्टरी को जोड़ना है, न कि Android skk पर।
बार्टोज़ बियाल्की

@BartoszBialecki धन्यवाद
रोमांटिक इलेक्ट्रॉन

जवाबों:


312

Android Studio में Android OpenCV sdk का उपयोग करने के लिए नीचे दिए गए चरण। यह इस ( 1 ) एसओ उत्तर का एक सरलीकृत संस्करण है ।

  1. Android के लिए OpenCV.org से नवीनतम OpenCV एसडीके डाउनलोड करें और ज़िप फ़ाइल को विघटित करें।
  2. OpenCV को एंड्रॉइड स्टूडियो में आयात करें , फ़ाइल से -> नया -> मॉड्यूल आयात करें, अनज़िप्ड ओपेनवेक आर्काइव में sdk / java फ़ोल्डर चुनें ।
  3. अपने प्रोजेक्ट build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion और d) targetSdkVersion को मिलान करने के लिए 4 फ़ील्ड अपडेट करने के लिए आयातित OpenCV मॉड्यूल के तहत build.gradle को अपडेट करें।
  4. अनुप्रयोग -> मॉड्यूल सेटिंग्स द्वारा मॉड्यूल निर्भरता जोड़ें , और निर्भरता टैब का चयन करें । नीचे + आइकन पर क्लिक करें , मॉड्यूल निर्भरता चुनें और आयातित OpenCV मॉड्यूल चुनें।
    • एंड्रॉइड स्टूडियो v1.2.2 के लिए, मॉड्यूल सेटिंग्स तक पहुंचने के लिए: प्रोजेक्ट दृश्य में, निर्भर मॉड्यूल पर राइट-क्लिक करें -> मॉड्यूल सेटिंग्स खोलें
  5. एप्लिकेशन / src / main के तहत एंड्रॉइड स्टूडियो में एसडीके / देशी के तहत लिबास फ़ोल्डर कॉपी करें
  6. एंड्रॉयड स्टूडियो में, की नकल की नाम बदलने libs के लिए निर्देशिका jniLibs और हम किया जाता है।

स्टेप (6) तब से है जब एंड्रॉइड स्टूडियो app/src/main/jniLibsपुराने libsफ़ोल्डर के बजाय देशी कामों की अपेक्षा करता है । Android OpenCV में नए लोगों के लिए, नीचे दिए गए चरणों को याद न करें

  • शामिल करें static{ System.loadLibrary("opencv_java"); }(नोट: इस चरण में OpenCV संस्करण 3 के लिए आपको लाइब्रेरी को लोड करना चाहिए opencv_java3।)
  • चरण (5) के लिए, यदि आप x86 जैसे किसी भी प्लेटफ़ॉर्म की उपेक्षा करते हैं, तो सुनिश्चित करें कि आपका डिवाइस / एम्यूलेटर उस प्लेटफ़ॉर्म पर नहीं है।

OpenCV लिखित C / C ++ में है। जावा रैपर हैं

  1. Android OpenCV SDK - OpenCV.org ने Android जावा आवरण को बनाए रखा। मैं यह सुझाव देता हूं।
  2. OpenCV जावा - OpenCV.org ने ऑटो उत्पन्न डेस्कटॉप जावा आवरण को बनाए रखा।
  3. JavaCV - स्वतंत्र डेवलपर द्वारा लोकप्रिय जावा आवरण। Android विशिष्ट नहीं है। यह लाइब्रेरीOpenCV के नए संस्करणों के साथ सिंक से बाहर हो सकती है।

1
मुझे दूसरे चरण के बाद त्रुटियां हो रही हैं, क्या मैं javadocsनिर्देशिका को हटा दूंगा? यह भी स्थापित करने के लिए मुझसे पूछ android sdk 14रहा है हालांकि मैं उन उपकरणों को लक्षित कर रहा हूं जो समर्थन करते हैंandroid sdk 15
रोमांटिक इलेक्ट्रॉन

1
@RomanticElectron उम्मीद है कि आपने OpenCV4Android 2.4.10 लिंक sourceforge.net/projects/opencvlibrary/files/opencv-android/… से डाउनलोड किया है और यह जावा डेस्कटॉप संस्करण नहीं है?
किरण

2
ठीक है मैं समझ गया, मैंने सोचा था कि आप sdkमेरे सिस्टम पर इंस्टॉलेशन डायरेक्टरी के बारे में बात कर रहे थे, जबकि आप उस डायरेक्टरी के बारे में बात कर रहे थे जो आ रही है। Android Open CV SDKपूरा स्टेप 6. मैं कहाँ शामिल static{ System.loadLibrary("opencv_java"); }करूँ?
रोमांटिक इलेक्ट्रान

5
@RomanticElectron जहां आप स्थैतिक {System.loadLibrary ("opencv_java") शामिल करते हैं; }? आप कहते हैं, "धन्यवाद मुझे मिल गया है" लेकिन लगता है कि बीच में कोई संदेश नहीं है। फिर आप कहते हैं कि इसकी जरूरत नहीं है। क्या आप थोड़ा और समझा सकते हैं? धन्यवाद।
पंटोफिसो

8
android-14चरण 2 में मॉड्यूल आयात करने के बाद किसी को भी त्रुटि होने पर , आपको अपनी परियोजना में build.gradle
ओपनसीवी

144

OpenCV v3.1.0 को एंड्रॉइड स्टूडियो v1.4.1 में समेकित करना , अतिरिक्त विवरण के साथ निर्देश और यह है-क्या-क्या-आप-चाहिए-प्रकार के स्क्रीनशॉट।

अधिकांश श्रेय किरण, कूल, 1 ”और स्टीव लाइल्स को जाता है, क्योंकि वे स्पष्टीकरण के लिए opencv.org पर हैं। मैं इस उत्तर को जोड़ रहा हूं क्योंकि मेरा मानना ​​है कि एंड्रॉइड स्टूडियो का इंटरफ़ेस अब इस प्रकार के एकीकरण सामान पर काम करने के लिए पर्याप्त स्थिर है। इसके अलावा, मुझे इन निर्देशों को हमारी परियोजना के लिए वैसे भी लिखना होगा।

अनुभवी एएस डेवलपर्स को इस पांडित्य में से कुछ मिलेंगे। यह उत्तर एंड्रॉइड स्टूडियो में सीमित अनुभव वाले लोगों पर लक्षित है।

  1. प्रोजेक्ट विज़ार्ड का उपयोग करके एक नया Android स्टूडियो प्रोजेक्ट बनाएं (मेनू: / फ़ाइल / नई परियोजना):

    • इसे " cvtest1 " कहें
    • फार्म फैक्टर: एपीआई 19, एंड्रॉयड 4.4 (किटकैट)
    • ब्लांक एक्टिविटी जिसका नाम मेनऐक्टिविटी है

      आपके पास एक cvtest1 निर्देशिका होनी चाहिए जहां यह प्रोजेक्ट संग्रहीत है। (एंड्रॉइड स्टूडियो का टाइटल बार आपको दिखाता है कि प्रोजेक्ट को खोलते समय cvtest1 कहां है)

  2. सत्यापित करें कि आपका ऐप सही तरीके से चलता है। निर्माण / परीक्षण चक्र आपके लिए ठीक है, यह पुष्टि करने के लिए "हैलो वर्ल्ड" टेक्स्ट जैसा कुछ बदलने का प्रयास करें। (मैं एक एपीआई 19 डिवाइस के एक एमुलेटर के साथ परीक्षण कर रहा हूं)।

  3. Android v3.1.0 के लिए OpenCV पैकेज डाउनलोड करें और इसे कहीं अस्थायी निर्देशिका में अनज़िप करें। (सुनिश्चित करें कि यह Android के लिए विशेष रूप से पैकेज है और न सिर्फ जावा पैकेज के लिए OpenCV।) मैं इस निर्देशिका "फोन करता हूँ unzip-निर्देशिका " नीचे unzip-निर्देशिका आप एक होना चाहिए एसडीके / देशी / libs सबडायरेक्टरियों के साथ शुरू के साथ निर्देशिका हाथ जैसी चीजें ..., मिप्स ... और x86 ... (एक प्रकार के "आर्किटेक्चर" के लिए एंड्रॉइड चलता है)

  4. एक मॉड्यूल के रूप में अपनी परियोजना में Android स्टूडियो आयात OpenCV से: मेनू: / फ़ाइल / नया / आयात_आवेदन :

    • स्रोत-निर्देशिका: {unzip-dir} / sdk / java
    • मॉड्यूल का नाम: Android स्टूडियो स्वचालित रूप से इस क्षेत्र में OpenCVLibrary310 के साथ भरता है (सटीक नाम शायद कोई फर्क नहीं पड़ता, लेकिन हम इसके साथ जाएंगे)।
    • नेक्स्ट पर क्लिक करें । आपको तीन चेकबॉक्स के साथ एक स्क्रीन मिलती है और जार, लाइब्रेरी और आयात विकल्पों के बारे में प्रश्न पूछे जाते हैं। तीनों की जांच होनी चाहिए। समाप्त पर क्लिक करें।

      एंड्रॉइड स्टूडियो मॉड्यूल को आयात करना शुरू कर देता है और आपको एक आयात-सारांश.टैक्स फ़ाइल दिखाई जाती है जिसमें आयात नहीं की गई सूची (ज्यादातर जावदॉक फाइलें) और अन्य जानकारी के टुकड़े होते हैं। यहां छवि विवरण दर्ज करें

      लेकिन क्या आप भी एक त्रुटि संदेश कह मिल हैश स्ट्रिंग 'एंड्रॉयड -14' के साथ लक्ष्य पाने में विफल रहे ... । ऐसा इसलिए होता है क्योंकि आपके द्वारा डाउनलोड की गई OpenCV ज़िप फ़ाइल में build.gradle फ़ाइल Android API संस्करण 14 का उपयोग करके संकलन करने के लिए कहती है, जो डिफ़ॉल्ट रूप से आपके पास Android Studio v1.4.1 के साथ नहीं है। यहां छवि विवरण दर्ज करें

  5. प्रोजेक्ट संरचना संवाद खोलें ( मेनू: / फ़ाइल / Project_Structure )। "एप्लिकेशन" मॉड्यूल का चयन करें, निर्भरता टैब पर क्लिक करें और जोड़ें : OpenCVLibrary310 एक मॉड्यूल निर्भरता के रूप में। जब आप Add / Module_D निर्भरता का चयन करते हैं तो यह आपके द्वारा जोड़े जा सकने वाले मॉड्यूल की सूची में दिखाई देना चाहिए। यह अब एक निर्भरता के रूप में दिखाई देगा, लेकिन आपको ईवेंट लॉग में कुछ और नहीं मिल पाएंगे-एंड्रॉइड -14 त्रुटियां।

  6. एक नज़र डालें जो build.gradle अपने अनुप्रयोग मॉड्यूल के लिए फ़ाइल। एंड्रॉइड प्रोजेक्ट में कई बिल्ड.ग्रेडल फाइलें हैं। आप जो चाहते हैं वह cvtest1 / app डायरेक्टरी में है और प्रोजेक्ट व्यू से बिल्ड.ग्रेड (मॉड्यूल: ऐप) जैसा दिखता है । इन चार क्षेत्रों के मूल्यों पर ध्यान दें:

    • compileSDKVersion (मेरा कहना है कि 23)
    • buildToolsVersion (मेरा कहना है कि 23.0.2)
    • minSdkVersion (मेरा कहना है कि 19)
    • targetSdkVersion (मेरा कहना है कि 23)
  7. आपकी परियोजना में अब cvtest1 / OpenCVLibrary310 निर्देशिका है, लेकिन यह परियोजना दृश्य से दिखाई नहीं देती है:

यहां छवि विवरण दर्ज करें

किसी अन्य उपकरण का उपयोग करें, जैसे कि कोई फ़ाइल प्रबंधक, और इस निर्देशिका पर जाएं। आप एंड्रॉइड से प्रोजेक्ट फाइलों में प्रोजेक्ट व्यू को भी स्विच कर सकते हैं और इस निर्देशिका को आप इस स्क्रीनशॉट में दिखाए अनुसार पा सकते हैं: यहां छवि विवरण दर्ज करें

अंदर एक और build.gradle फ़ाइल है (यह ऊपर स्क्रीनशॉट में हाइलाइट किया गया है)। चरण 6 से चार मानों के साथ इस फ़ाइल को अपडेट करें।

  1. अपनी परियोजना को फिर से व्यवस्थित करें और फिर इसे साफ / पुनर्निर्माण करें। (मेनू: / बिल्ड / Clean_Project ) यह त्रुटियों के बिना साफ और निर्माण करना चाहिए और आपको कई संदर्भों को देखना चाहिए : 0: संदेश स्क्रीन में OpenCVLibrary310

    यहां छवि विवरण दर्ज करें

    इस बिंदु पर मॉड्यूल को परियोजना की तरह पदानुक्रम में खुलेआम दिखाई देना चाहिए , जैसे कि ऐप की तरह । (ध्यान दें कि उस छोटे ड्रॉप-डाउन मेनू में मैंने प्रोजेक्ट व्यू से एंड्रॉइड व्यू पर वापस स्विच किया )। आपको " ग्रैडल स्क्रिप्स" के तहत एक अतिरिक्त बिल्ड.ग्रेड फ़ाइल भी देखनी चाहिए, लेकिन मुझे एंड्रॉइड स्टूडियो इंटरफ़ेस थोड़ा गड़बड़ लगता है और कभी-कभी यह तुरंत ऐसा नहीं करता है। इसलिए एंड्रॉइड स्टूडियो को फिर से शुरू करने, सफाई करने की कोशिश करें।

    आपको इस स्क्रीनशॉट की तरह java के तहत सभी OpenCV फ़ंक्शन के साथ OpenCVLibrary310 मॉड्यूल देखना चाहिए:

    यहां छवि विवरण दर्ज करें

  2. कॉपी {unzip-निर्देशिका} / SDK / देशी / libs , अपने Android परियोजना के लिए निर्देशिका (और यह के अंतर्गत सब कुछ) को cvtest1 / OpenCVLibrary310 / src / मुख्य / , और फिर से अपनी कॉपी का नाम बदलने libs को jniLibs । अब आपके पास cvtest1 / OpenCVLibrary310 / src / main / jniLibs डायरेक्टरी होनी चाहिए । अपनी परियोजना को फिर से चालू करें और यह निर्देशिका अब खुले दृश्य के तहत परियोजना दृश्य 310 में दिखाई देनी चाहिए ।

    यहां छवि विवरण दर्ज करें

  3. MainActivity.java की onCreate विधि पर जाएं और इस कोड को जोड़ें:

    if (!OpenCVLoader.initDebug()) {
        Log.e(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), not working.");
    } else {
        Log.d(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), working.");
    }
    

    फिर अपना एप्लिकेशन रन करें। आपको एंड्रॉइड मॉनिटर में इस तरह की लाइनें देखनी चाहिए: यहां छवि विवरण दर्ज करें (मुझे नहीं पता कि त्रुटि संदेश के साथ वह लाइन क्यों है)

  4. अब वास्तव में कुछ OpenCV कोड का उपयोग करने का प्रयास करें। नीचे दिए गए उदाहरण में मैंने एंड्रॉइड एमुलेटर पर cvtest1 एप्लिकेशन की कैश निर्देशिका में एक .jpg फ़ाइल की प्रतिलिपि बनाई। नीचे दिया गया कोड इस छवि को लोड करता है, कैनी एज डिटेक्शन एल्गोरिथ्म चलाता है और फिर उसी निर्देशिका में वापस .png फ़ाइल के लिए परिणाम लिखता है।

    इस कोड को पिछले चरण से कोड के ठीक नीचे रखें और इसे अपनी फ़ाइलों / निर्देशिकाओं से मिलान करने के लिए बदल दें।

    String inputFileName="simm_01";
    String inputExtension = "jpg";
    String inputDir = getCacheDir().getAbsolutePath();  // use the cache directory for i/o
    String outputDir = getCacheDir().getAbsolutePath();
    String outputExtension = "png";
    String inputFilePath = inputDir + File.separator + inputFileName + "." + inputExtension;
    
    
    Log.d (this.getClass().getSimpleName(), "loading " + inputFilePath + "...");
    Mat image = Imgcodecs.imread(inputFilePath);  
    Log.d (this.getClass().getSimpleName(), "width of " + inputFileName + ": " + image.width());
    // if width is 0 then it did not read your image.
    
    
    // for the canny edge detection algorithm, play with these to see different results
    int threshold1 = 70;
    int threshold2 = 100;
    
    Mat im_canny = new Mat();  // you have to initialize output image before giving it to the Canny method
    Imgproc.Canny(image, im_canny, threshold1, threshold2);
    String cannyFilename = outputDir + File.separator + inputFileName + "_canny-" + threshold1 + "-" + threshold2 + "." + outputExtension;
    Log.d (this.getClass().getSimpleName(), "Writing " + cannyFilename);
    Imgcodecs.imwrite(cannyFilename, im_canny);
    
  5. अपना एप्लिकेशन चलाएं। आपके एमुलेटर को एक ब्लैक एंड व्हाइट "एज" इमेज बनानी चाहिए। आप आउटपुट प्राप्त करने या इसे दिखाने के लिए कोई गतिविधि लिखने के लिए Android डिवाइस मॉनिटर का उपयोग कर सकते हैं।

गोचच :

  • यदि आप किटकैट के नीचे अपना टारगेट प्लेटफ़ॉर्म कम करते हैं, तो OpenCV के कुछ पुस्तकालय अब कार्य नहीं करेंगे, विशेष रूप से org.opencv.android.Camera2Renderer और अन्य संबंधित कक्षाओं से संबंधित कक्षाएं। आप शायद लगभग OpenCV .java फ़ाइलों को हटाकर इसके चारों ओर प्राप्त कर सकते हैं।
  • यदि आप अपना टारगेट प्लेटफ़ॉर्म लॉलीपॉप तक बढ़ाते हैं या फ़ाइल लोड करने के मेरे उदाहरण से ऊपर काम नहीं कर सकते हैं क्योंकि निरपेक्ष फ़ाइल रास्तों का उपयोग पर आधारित है। इसलिए आपको गैलरी या कहीं और से फ़ाइल लोड करने के लिए उदाहरण बदलना पड़ सकता है। ऐसे कई उदाहरण हैं जो तैर ​​रहे हैं।

2
16-फ़रवरी संपादित करें: jniLibs अब OpenCVLibrary310 निर्देशिका में है, मुख्य ऐप निर्देशिका नहीं। या तो काम करता है लेकिन यह मुझे opencv भाग में रखने के लिए क्लीनर लगता है। प्लस अधिक स्क्रीनशॉट और "गोचच" भाग।
ssimm

मुझे लगता है कि कुछ आयात बयान गायब हैं, अन्यथा बहुत अच्छा काम! +1
एलन नोरगार्ड

1
मैंने आपके उत्तर का पालन किया लेकिन असफल रहा। 1 मुझे त्रुटि मिली OpenCV error: Cannot load info library for OpenCV 2 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/www.deven.com.opencv-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libopencv_java3.so मैंने आपके द्वारा लिखे गए कदम के बारे में क्या त्रुटि की है।
देवेन्द्र सिंह

2
@ देवेंद्रसिंह मुझे वही त्रुटि मिली जो आपको मिली थी लेकिन मुझे एहसास हुआ कि मैं चरण 9 से चूक गया था।
आसू

2
क्या होगा अगर हम android स्टूडियो में opencv के लिए c ++ में कोड करना चाहते हैं?
user8663682

37

उन सभी लोगों के लिए जिन्होंने उत्तर के ऊपर (महान!) सभी चरणों और स्क्रीन शॉट्स के साथ भागना चाहा, मेरे लिए यह काम किया android studio 2.2.1:

  1. एक नया प्रोजेक्ट बनाएं, इसे नाम दें जैसा आप चाहते हैं और डिफ़ॉल्ट लें (minSdkVersion 15 ठीक है)।
  2. जिप फाइल को यहां से डाउनलोड करें: https://sourceforge.net/projects/opencvlibrary/files/opencv-android/ (मैंने 3.1.0 वर्जन डाउनलोड किया, लेकिन एक नया वर्जन हो सकता है)।
  3. ज़िप फ़ाइल को अनज़िप करें, सबसे अच्छा स्थान आपके कार्यक्षेत्र फ़ोल्डर में है, लेकिन यह वास्तव में कोई फर्क नहीं पड़ता।
  4. अंदर Android Studio, ओके पर क्लिक करें File->New-> Import Moduleऔर नेविगेट करें और \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\javaफिर सभी डिफ़ॉल्ट संवादों को स्वीकार करें।
  5. gradleअपने app मॉड्यूल की फ़ाइल में , इसे निर्भरता ब्लॉक में जोड़ें:

    dependencies {
        compile project(':openCVLibraryXYZ')
        //rest of code
    }
    

जहाँ XYZ आपके द्वारा डाउनलोड किया गया सटीक संस्करण है, उदाहरण के लिए मेरे मामले में:

    dependencies {
        compile project(':openCVLibrary320')
        //rest of code
    }

1
अच्छा और सरल, thnx ;-) संस्करण 3.2.0 के लिए भी काम करता है।
ब्‍लेकार्निया

2
धन्यवाद, यह वास्तव में आसान समाधान है। एक बिंदु मुझसे। नया OpenCV मॉड्यूल संकलित नहीं किया जा सका। यहाँ जवाब ने मुझे इस मुद्दे को ठीक करने में मदद की stackoverflow.com/a/40302788/408780
Tima

सिर्फ @blacharnia को जोड़ने के लिए, बस यह सुनिश्चित करें कि आप 310 के बजाय क्रैडल निर्भरता अनुभाग में 'संकलन परियोजना (': openCVLibrary320 ') का उपयोग करते हैं
अब्राहम फिलिप

शायद अधिक आम तौर पर, उपरोक्त टिप्पणियों को जोड़ने के लिए, "संकलन परियोजना (': openCVLibraryXYZ')" का उपयोग करें "जहाँ XYZ 'डॉट्स' के बिना ओपनसीवी एंड्रॉइड एसडीके का संस्करण संख्या है - यह अब 3.4.0 के संस्करण पर भी काम करता है -> "संकलित परियोजना (': OpenCVLibrary340') का उपयोग करें
मिक

@ धन्यवाद, मैंने आपके सुझाव के अनुसार उत्तर संपादित किया।
यशख

9

Android Studio 3.4 + OpenCV 4.1

  1. यहां से नवीनतम OpenCV ज़िप फ़ाइल डाउनलोड करें (वर्तमान नवीनतम संस्करण 4.1.0 है) और इसे अपने कार्यक्षेत्र या किसी अन्य फ़ोल्डर में अनज़िप करें।

  2. सामान्य रूप से नया एंड्रॉइड स्टूडियो प्रोजेक्ट बनाएं। क्लिक करें File->New->Import Module, नेविगेट करें , /path_to_unzipped_files/OpenCV-android-sdk/sdk/javaमॉड्यूल नाम सेट opencvकरें, क्लिक करें Nextऔर स्क्रीन में सभी विकल्पों को अनचेक करें।

  3. Projectफ़ाइल दृश्य मोड सक्षम करें (डिफ़ॉल्ट मोड है Android)। में opencv/build.gradleफ़ाइल परिवर्तन apply plugin: 'com.android.application'करने के लिए apply plugin: 'com.android.library'और की जगह application ID "org.opencv"के साथ

    minSdkVersion 21
    targetSdkVersion 28
    

    (मूल्यों के अनुसार app/build.gradle)। ग्रैडल फाइलों के साथ सिंक प्रोजेक्ट।

  4. इस स्ट्रिंग को app/build.gradleफ़ाइल में निर्भरता ब्लॉक में जोड़ें

    dependencies {
        ...
        implementation project(path: ':opencv')
        ...
    }
    
  5. फिर से Androidफाइल व्यू मोड चुनें। appमॉड्यूल और गोटो पर राइट क्लिक करें New->Folder->JNI Folder। बदलें फ़ोल्डर स्थान और सेट का चयन करें src/main/jniLibs/

  6. फिर से Projectफाइल व्यू मोड का चयन करें और से सभी फ़ोल्डर्स को कॉपी /path_to_unzipped_files/OpenCV-android-sdk/sdk/native/libsकरें app/src/main/jniLibs

  7. Androidफाइल व्यू मोड में फिर से appमॉड्यूल पर राइट क्लिक करें और चुनें Link C++ Project with Gradle। फ़ाइल के ndk-buildलिए बिल्ड सिस्टम और पथ का चयन करें ।OpenCV.mk/path_to_unzipped_files/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk

    path_to_unzipped_files कोई रिक्त स्थान नहीं होना चाहिए, या आपको त्रुटि मिलेगी!

OpenCV आरंभीकरण की जाँच करने के लिए मुख्य onCreate()विधि में टोस्ट संदेश जोड़ें :

Toast.makeText(MainActivity.this, String.valueOf(OpenCVLoader.initDebug()), Toast.LENGTH_LONG).show();

यदि आरंभ सफल होता है तो आप trueटोस्ट संदेश में देखेंगे और फिर देखेंगे false


ऊपर आप कहते हैं "एप्लीकेशन आईडी" org.opencv "को ..... के साथ बदलें" लेकिन "के साथ" का पालन करने के लिए कुछ भी नहीं है। क्या आप स्पष्ट कर सकते हैं? क्या आपके कहने का अर्थ है "
Dale

@ डेल हाँ, आपको application ID "org.opencv"स्ट्रिंग को दो स्ट्रिंग्स से बदलना चाहिए : minSdkVersion 21और targetSdkVersion 28(ऐप / बिल्ड.ग्रेड फ़ाइल में मान के अनुसार)
प्लो_कॉन

मैंने आपके बताए अनुसार सभी चरणों का पालन किया। लेकिन त्रुटि ई / कला: dlopen ("/ data / app / com.example.objectsegmentation-1 / lib / arm64 / libopencv_java4.so", RTLD_LAZY) विफल रही: dlopen विफल रही: पुस्तकालय "libc ++ _ साझा.so" नहीं मिला।
मस्तन

0

JnLibs cpp बनाते समय किसी को भी समस्या का सामना करना पड़ रहा है .. अन्याय जोड़ें ndk ।।


0

यह मेरे लिए काम करता है और एक आसान निर्भरता जोड़ने के रूप में आसान था:

https://bintray.com/seesaa/maven/opencv#

https://github.com/seesaa/opencv-android

एक चेतावनी यह है कि मुझे एक हार्डवेयर डिबगिंग डिवाइस का उपयोग करना था क्योंकि आर्म इम्यूलेटर मेरे लिए बहुत धीमी गति से चल रहे थे (जैसा कि AVD मैनेजर कहते हैं कि वे करेंगे), और, जैसा कि रेपो README में वर्णित है, इस संस्करण में x86 या x86_64 समर्थन शामिल नहीं है।

यह निर्माण और सुझाए गए परीक्षण के लिए लगता है:

static {
    OpenCVLoader.initDebug();
}

मेरे बारे में सही लग रहा है कि उत्पादन का एक गुच्छा बाहर थूकता है।


यह एंड्रॉइड स्टूडियो में एक ताजा परियोजना से था। मैंने कुछ भी आयात नहीं किया, कुछ भी डाउनलोड नहीं किया, आदि बस ग्रेडल निर्भरता और सिंक जोड़ें।
नामदेव

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.