অ্যান্ড্রয়েড স্টুডিওতে ওপেনসিভি


140

আমি আমার অ্যাপে অ্যান্ড্রয়েড স্টুডিও সহ ওপেনসিভি লাইব্রেরিটি ব্যবহার করতে চাই। আমি এখানে পাওয়া নির্দেশাবলী অনুসরণ করেছি কিন্তু আমি ত্রুটি পেয়েছি

'ডিফল্ট' নামের সাথে কনফিগারেশন পাওয়া যায় নি

কী ভুল হতে পারে?

আমি গ্রেড 2.2.1 এর সাথে অ্যান্ড্রয়েড স্টুডিও 1.0 ব্যবহার করি।


1
এখন আমরা অ্যান্ড্রয়েড স্টুডিও সহ মডিউলগুলি আমদানি করতে পারি এবং পদক্ষেপগুলি আরও সহজ হতে পারে। আপনি কি এই স্ট্যাকওভারফ্লো.com
কিরণ

আপনাকে ধন্যবাদ, এটি কাজ করে। উত্তর হিসাবে লিখুন তবে আমি এটি গ্রহণ করতে পারি।
বার্তোস্ বিয়ালেস্কি

@ বার্তোসবিয়ালেকি @ কিরান, আমি এটি ৪ নং পদক্ষেপে অনুসরণ করেছি, আমি nativeআমার sdk ডিরেক্টরিতে ডিরেক্টরিটি খুঁজে পাচ্ছি না? আমি কি কিছু অনুভব করছি?
রোম্যান্টিক ইলেকট্রন

1
@ রোমান্টিক ইলেক্ট্রন আপনাকে অ্যান্ড্রয়েড এসডিকে নয়, ওপেনসিভি লাইব্রেরির এসডিকে থেকে নাটভি ডিরেক্টরি যুক্ত করতে হবে।
বার্তোস বিয়ালেস্কি

@ বার্তোসবিয়ালেকি ধন্যবাদ
রোমান্টিক ইলেক্ট্রন

উত্তর:


312

অ্যান্ড্রয়েড স্টুডিওতে অ্যান্ড্রয়েড ওপেনসিভি এসডিকে ব্যবহারের জন্য নীচের পদক্ষেপগুলি। এটি এটির ( 1 ) এসও উত্তরের সরলিকৃত সংস্করণ ।

  1. OpenCV.org থেকে অ্যান্ড্রয়েডের জন্য সর্বশেষ ওপেনসিভি এসডিকে ডাউনলোড করুন এবং জিপ ফাইলটি সংক্ষেপিত করুন।
  2. অ্যান্ড্রয়েড স্টুডিওতে ওপেনসিভি আমদানি করুন , ফাইল থেকে -> নতুন -> মডিউল আমদানি করুন , আনজিপড ওপেনসিভি সংরক্ষণাগারে এসডিকে / জাভা ফোল্ডারটি চয়ন করুন ।
  3. আপনার প্রকল্পের বিল্ডড্র্যাডল মিলানোর জন্য 4 টি ক্ষেত্র আপডেট করার জন্য আমদানি করা ওপেনসিভি মডিউলের অধীনে বিল্ডড্র্যাডল আপডেট করুন ক) সংকলনএসডেক ভার্সন খ) বিল্ডটুলস ভার্সন গ) মিনিসডেক ভার্শন এবং ঘ) টার্গেটএসডেক ভার্সন।
  4. অ্যাপ্লিকেশন -> মডিউল সেটিংসের মাধ্যমে মডিউল নির্ভরতা যুক্ত করুন এবং নির্ভরতা ট্যাবটি নির্বাচন করুন । ক্লিক করুন + + , নীচে আইকন নির্বাচন মডিউল নির্ভরতা এবং আমদানি OpenCV মডিউল নির্বাচন করুন।
    • অ্যান্ড্রয়েড স্টুডিও v1.2.2 এর জন্য মডিউল সেটিংসে অ্যাক্সেস পেতে: প্রকল্পের দৃশ্যে নির্ভরশীল মডিউলটিতে ডান ক্লিক করুন -> মডিউল সেটিংস খুলুন
  5. অনুলিপি লিব অধীনে ফোল্ডারের SDK / নেটিভ অধীনে অ্যান্ড্রয়েড স্টুডিওতে অ্যাপ্লিকেশন / src / প্রধান
  6. অ্যান্ড্রয়েড স্টুডিওতে, কপি নামান্তর লিব করার ডিরেক্টরির jniLibs এবং আমরা করা হয়।

পদক্ষেপ ()) হ'ল যেহেতু অ্যান্ড্রয়েড স্টুডিওগুলি app/src/main/jniLibsপুরানো libsফোল্ডারের পরিবর্তে দেশীয় লিবসের প্রত্যাশা করে । অ্যান্ড্রয়েড ওপেনসিভিতে নতুন যারা, তাদের নীচের পদক্ষেপগুলি মিস করবেন না

  • অন্তর্ভুক্ত করুন static{ System.loadLibrary("opencv_java"); }(দ্রষ্টব্য: এই পদক্ষেপে ওপেনসিভি সংস্করণ 3 এর জন্য আপনার পরিবর্তে লাইব্রেরিটি লোড করা উচিত opencv_java3))
  • পদক্ষেপের জন্য (5), আপনি x86 এর মতো কোনও প্ল্যাটফর্ম libs উপেক্ষা করলে নিশ্চিত করুন যে আপনার ডিভাইস / এমুলেটর সেই প্ল্যাটফর্মে নেই।

ওপেনসিভি লিখিত সি / সি ++ এ রয়েছে। জাভা র‍্যাপারগুলি হ'ল

  1. অ্যান্ড্রয়েড ওপেনসিভি এসডিকে - ওপেনসিভি.আর.গ্রে অ্যান্ড্রয়েড জাভা র‍্যাপারটি বজায় রেখেছিল। আমি এই এক পরামর্শ।
  2. ওপেনসিভি জাভা - ওপেনসিভি.আর.জি. রক্ষণাবেক্ষণ করে স্বয়ংক্রিয়ভাবে উত্পন্ন ডেস্কটপ জাভা র‍্যাপার।
  3. জাভাসিভি - স্বাধীন বিকাশকারীগণ দ্বারা পরিচালিত জনপ্রিয় জাভা রেপার। অ্যান্ড্রয়েড নির্দিষ্ট নয়। এই লাইব্রেরিটিওপেনসিভি নতুন সংস্করণগুলির সাথে সিঙ্কের বাইরে চলে যেতে পারে

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আসেন সে সম্পর্কে কথা বলছিলেন k ওক সম্পন্ন হয়েছে step. আমি কোথায় অন্তর্ভুক্ত করব static{ System.loadLibrary("opencv_java"); }?
রোমান্টিক ইলেক্ট্রন

5
@ রোমান্টিক ইলেক্ট্রন যেখানে আপনি স্থিতিশীল {System.loadLibrary ("ওপেনসিভি_জভা") অন্তর্ভুক্ত করবেন; ? আপনি "থ্যাঙ্কস আমি পেয়েছি" বলেছি কিন্তু এর মধ্যে কোনও বার্তা নেই বলে মনে হচ্ছে। তারপরে আপনি বলেন এটির দরকার নেই। আপনি কি আরও কিছু ব্যাখ্যা করতে পারেন? ধন্যবাদ।
পুন্টোফিসো

8
android-14পদক্ষেপ 2-এ মডিউলটি আমদানি করার পরে কারওর ত্রুটি রয়েছে, আপনাকে আপনার প্রকল্পেরbuild.gradle ওপেনসিভি ডিরেক্টরিতে ম্যানুয়ালি সম্পাদনা করতে হবে 3.
নং

144

অ্যান্ড্রয়েড স্টুডিও ভি 1.4.1 এ ওপেনসিভি v3.1.0 একীকরণ করা হচ্ছে , অতিরিক্ত বিশদ সহ নির্দেশাবলী এবং এটি-যা-আপনার-হওয়া উচিত টাইপ স্ক্রিনশট।

বেশিরভাগ কৃতিত্ব কিরণ, কুল, 1 "এবং স্টিভাইলসকে ওপেনকভি.আর.গুয়েজে তাদের ব্যাখ্যাগুলির জন্য দিয়ে গেছে I'm আমি এই উত্তরটি যুক্ত করছি কারণ আমার বিশ্বাস যে অ্যান্ড্রয়েড স্টুডিওর ইন্টারফেস এখন এই ধরণের ইন্টিগ্রেশন স্টাফের সাথে কাজ করার পক্ষে যথেষ্ট স্থিতিশীল is এছাড়াও আমাদের প্রকল্পের জন্য আমাকে এই নির্দেশাবলী লিখতে হবে।

অভিজ্ঞ এএস বিকাশকারীরা এই পেডেন্টিকের কিছু খুঁজে পাবেন। এই উত্তরটি অ্যান্ড্রয়েড স্টুডিওতে সীমিত অভিজ্ঞতার সাথে লক্ষ্যযুক্ত targeted

  1. প্রকল্প উইজার্ড ব্যবহার করে একটি নতুন অ্যান্ড্রয়েড স্টুডিও প্রকল্প তৈরি করুন (মেনু: / ফাইল / নতুন প্রকল্প):

    • এটিকে " সিভিটেস্ট 1 " বলুন
    • ফর্ম ফ্যাক্টর: API 19, Android 4.4 (KitKat)
    • খালি ক্রিয়াকলাপটির নাম মেইনএকটিভিটি

      এই প্রকল্পটি যেখানে সঞ্চিত আছে আপনার একটি সিভেস্টেস্ট 1 ডিরেক্টরি থাকতে হবে। (অ্যান্ড্রয়েড স্টুডিওর শিরোনাম দণ্ডটি আপনাকে দেখায় যে আপনি যখন প্রকল্পটি খুলবেন তখন cvtest1 কোথায় থাকে)

  2. আপনার অ্যাপটি সঠিকভাবে চলেছে তা যাচাই করুন। বিল্ড / পরীক্ষার চক্র আপনার পক্ষে ঠিক আছে কিনা তা নিশ্চিত করতে "হ্যালো ওয়ার্ল্ড" পাঠ্যের মতো কিছু পরিবর্তন করার চেষ্টা করুন। (আমি একটি এপিআই 19 ডিভাইসের এমুলেটর দিয়ে পরীক্ষা করছি)।

  3. অ্যান্ড্রয়েড v3.1.0 এর জন্য ওপেনসিভি প্যাকেজটি ডাউনলোড করুন এবং কোথাও কোনও অস্থায়ী ডিরেক্টরিতে এটি আনজিপ করুন। (নিশ্চিত করুন এটি Android এর জন্য বিশেষভাবে প্যাকেজ এবং মাত্র জাভা প্যাকেজের জন্য OpenCV।) আমি এই ডিরেক্টরির "ডাকবো আনজিপ-Dir " নিচে আনজিপ-Dir আপনি একটি থাকতে হবে SDK / নেটিভ / লিব সাবডিরেক্টরি যে দিয়ে শুরু সঙ্গে ডিরেক্টরি বাহু ..., মিপস ... এবং x86 ... এর মতো জিনিসগুলি (প্রতিটি ধরণের "আর্কিটেকচার" এর জন্য একটি অ্যান্ড্রয়েড চালু রয়েছে)

  4. অ্যান্ড্রয়েড স্টুডিও থেকে আপনার প্রকল্পে মডিউল হিসাবে ওপেনসিভি আমদানি করুন: মেনু: / ফাইল / নতুন / আমদানি_মডুল :

    • উত্স-ডিরেক্টরি: z আনজিপ-দির} / এসডিকে / জাভা
    • মডিউলটির নাম: অ্যান্ড্রয়েড স্টুডিওগুলি স্বয়ংক্রিয়ভাবে এই ক্ষেত্রটি ওপেনসিভিলিবারিয়ান310 দিয়ে পূর্ণ হয় (সঠিক নামটি সম্ভবত কিছু যায় আসে না তবে আমরা এটি নিয়ে যাব)।
    • পরবর্তী ক্লিক করুন । আপনি তিনটি চেকবক্স এবং একটি জার, লাইব্রেরি এবং আমদানি বিকল্প সম্পর্কে প্রশ্ন সহ একটি স্ক্রিন পাবেন। তিনটিই চেক করা উচিত। সমাপ্তিতে ক্লিক করুন

      অ্যান্ড্রয়েড স্টুডিও মডিউলটি আমদানি করতে শুরু করে এবং আপনাকে একটি আমদানি- সারাংশ.টিএসটি ফাইল দেখানো হয় যার মধ্যে কী কী আমদানি করা হয়নি (বেশিরভাগ জাভাদোক ফাইল) এবং অন্যান্য টুকরো তথ্যের একটি তালিকা রয়েছে। এখানে চিত্র বর্ণনা লিখুন

      কিন্তু আপনাকে একটি ত্রুটির বার্তা য়ে পেতে হ্যাশ STRING 'অ্যান্ড্রয়েড-14' সঙ্গে লক্ষ্য সন্ধান করতে ব্যর্থ হয়েছে ... । এটি ঘটেছিল কারণ আপনি ডাউনলোড করেছেন ওপেনসিভি জিপ ফাইলের বিল্ড.gradle ফাইলটি অ্যান্ড্রয়েড এপিআই সংস্করণ 14 ব্যবহার করে সংকলন করতে বলে, যা ডিফল্টরূপে আপনার অ্যান্ড্রয়েড স্টুডিও ভি 1.4.1 নেই। এখানে চিত্র বর্ণনা লিখুন

  5. প্রকল্প কাঠামো কথোপকথনটি খুলুন ( মেনু: / ফাইল / প্রজেক্ট_সঠন )। "অ্যাপ" মডিউলটি নির্বাচন করুন, নির্ভরতা ট্যাবে ক্লিক করুন এবং মডিউল নির্ভরতা হিসাবে ওপেনসিভিলিবারিয়ান310 যুক্ত করুন । আপনি যখন যোগ / মডিউল_নির্ভরতা নির্বাচন করেন এটি আপনার যোগ করতে পারে এমন মডিউলগুলির তালিকায় উপস্থিত হওয়া উচিত। এটি এখন নির্ভরতা হিসাবে প্রদর্শিত হবে তবে ইভেন্ট লগে আপনি আরও কিছু খুঁজে পাওয়া যায় না-অ্যান্ড্রয়েড -14 ত্রুটি পাবেন।

  6. অল্পক্ষণের build.gradle আপনার অ্যাপ মডিউলের জন্য ফাইল। একটি অ্যান্ড্রয়েড প্রকল্পে একাধিক বিল্ড.gradle ফাইল রয়েছে। আপনি যেটি চান সেটি সিভিটেস্ট 1 / অ্যাপ ডিরেক্টরিতে এবং প্রকল্পের ভিউ থেকে এটি বিল্ড.gradle (মডিউল: অ্যাপ) এর মতো দেখাচ্ছে । এই চারটি ক্ষেত্রের মানগুলি নোট করুন:

    • কম্পাইল এসডি কে ভার্সন (আমার বলছে 23)
    • বিল্ডটুলস ভার্সন (আমার বলছে 23.0.2)
    • minSdkVersion (আমার বলছে 19)
    • টার্গেটএসডিভি ভার্সন (আমার বলছে 23)
  7. আপনার প্রকল্পের এখন একটি সিভিটেস্ট 1 / ওপেনসিভিলিবারিয়ান310 ডিরেক্টরি রয়েছে তবে এটি প্রকল্পের দর্শন থেকে দৃশ্যমান নয়:

এখানে চিত্র বর্ণনা লিখুন

অন্য কোনও সরঞ্জাম যেমন কোনও ফাইল ম্যানেজার ব্যবহার করুন এবং এই ডিরেক্টরিতে যান। আপনি প্রকল্পের ভিউটি অ্যানড্রয়েড থেকে প্রজেক্ট ফাইলগুলিতে স্যুইচ করতে পারেন এবং এই স্ক্রিনশটটিতে প্রদর্শিত হিসাবে আপনি এই ডিরেক্টরিটি পেতে পারেন: এখানে চিত্র বর্ণনা লিখুন

ভিতরে আরও একটি বিল্ড.gradle ফাইল রয়েছে (এটি উপরের স্ক্রিনশটে হাইলাইট করা হয়েছে)। পদক্ষেপ from থেকে চারটি মান সহ এই ফাইলটি আপডেট করুন।

  1. আপনার প্রকল্পটি পুনরায় সেট করুন এবং তারপরে এটি পরিষ্কার / পুনর্নির্মাণ করুন। (মেনু: / বিল্ড / ক্লিন_প্রজেক্ট ) এটি ত্রুটি ছাড়াই পরিষ্কার করা উচিত এবং বিল্ড করা উচিত এবং আপনার 0: বার্তা স্ক্রিনে ওপেনসিভিলিবারিয়ান310 এর অনেকগুলি উল্লেখ দেখতে হবে।

    এখানে চিত্র বর্ণনা লিখুন

    এই মুহুর্তে মডিউলটি অ্যাপের মতো ওপেনসিভিলিবারিয়ান310 হিসাবে প্রকল্পের শ্রেণিবিন্যাসে উপস্থিত হওয়া উচিত । (নোট করুন যে সেই ছোট ড্রপ-ডাউন মেনুতে আমি প্রজেক্ট ভিউ থেকে অ্যান্ড্রয়েড ভিউতে ফিরে এসেছি )। "গ্রেডল স্ক্রিপ্টস" এর অধীনে আপনার একটি অতিরিক্ত বিল্ড.gradle ফাইলও দেখতে পাওয়া উচিত তবে আমি অ্যান্ড্রয়েড স্টুডিও ইন্টারফেসটি কিছুটা চটকদার দেখতে পেয়েছি এবং কখনও কখনও এটি এখনই ঠিক এটি করে না। তাই অ্যান্ড্রয়েড স্টুডিও পুনরায় চালু করার পরেও পুনরায় সংশোধন, পরিষ্কার করার চেষ্টা করুন।

    এই স্ক্রিনশটের মতো জাভাতে থাকা সমস্ত ওপেনসিভি ফাংশন সহ আপনার ওপেনসিভিএলিব্রি3৩ মডিউলটি দেখতে হবে:

    এখানে চিত্র বর্ণনা লিখুন

  2. কপি {আনজিপ-Dir} / SDK / নেটিভ / লিব , তখনই আপনার Android প্রকল্পে ডিরেক্টরি (এবং অধীনে সবকিছু) এর cvtest1 / OpenCVLibrary310 / src / প্রধান / , এবং তারপর থেকে আপনার কপি নামান্তর লিব করার jniLibs । আপনার এখন একটি সিভেস্টেস্ট 1 / ওপেনসিভিলিবারিয়ান310 / এসসিআর / মেইন / জনিলিব ডিরেক্টরি থাকা উচিত। আপনার প্রকল্পটি পুনরায় সেট করুন এবং এই ডিরেক্টরিটি এখন ওপেনসিভিলিবারিয়ান310 এর অধীনে প্রকল্পের দৃশ্যে উপস্থিত হওয়া উচিত ।

    এখানে চিত্র বর্ণনা লিখুন

  3. এর onCreate পদ্ধতি যান MainActivity.java এবং এই কোড যোগ:

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

    তারপরে আপনার অ্যাপ্লিকেশনটি চালান। আপনার এন্ড্রয়েড মনিটরে এর মতো লাইনগুলি দেখা উচিত: এখানে চিত্র বর্ণনা লিখুন (ত্রুটি বার্তার সাথে সেই লাইনটি কেন আছে তা আমি জানি না)

  4. এখন কিছু ওপেনসিভি কোড ব্যবহার করার চেষ্টা করুন। নীচের উদাহরণে আমি অ্যান্ড্রয়েড এমুলেটরটিতে সিভিটেস্ট 1 অ্যাপ্লিকেশনটির ক্যাশে ডিরেক্টরিতে একটি .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. আপনার অ্যাপ্লিকেশন চালান। আপনার এমুলেটরটি একটি কালো এবং সাদা "প্রান্ত" চিত্র তৈরি করা উচিত। আউটপুটটি পুনরুদ্ধার করতে আপনি অ্যান্ড্রয়েড ডিভাইস মনিটর ব্যবহার করতে পারেন বা এটি দেখানোর জন্য কোনও ক্রিয়াকলাপ লিখতে পারেন।

Gotchas :

  • যদি আপনি কিটকাটের নীচে আপনার টার্গেট প্ল্যাটফর্মটি কম করেন তবে কিছু ওপেনসিভি লাইব্রেরি আর কাজ করবে না, বিশেষত org.opencv.android.Camera2Renderer এবং অন্যান্য সম্পর্কিত ক্লাস সম্পর্কিত ক্লাসগুলি। আপনি সম্ভবত এপ্রিপ্রাইট ওপেনসিভি। জাভা ফাইলগুলি মুছে ফেলার মাধ্যমে এটি পেতে পারেন।
  • আপনি যদি আপনার টার্গেট প্ল্যাটফর্মটি ললিপপ বা তার উপরে আমার কোনও ফাইল লোড করার উদাহরণের উপরে তুলেন তবে কাজ নাও করতে পারে কারণ পরম ফাইল পাথের ব্যবহারের উপর ভিত্তি করে। সুতরাং আপনাকে গ্যালারী বা অন্য কোথাও কোনও ফাইল লোড করার জন্য উদাহরণটি পরিবর্তন করতে হতে পারে। চারপাশে ভাসমান অসংখ্য উদাহরণ রয়েছে।

2
16-ফেব্রুয়ারী সম্পাদনা: jniLibs এখন ওপেনসিভিলিবারিয়ান310 ডিরেক্টরিতে, মূল অ্যাপ্লিকেশন ডিরেক্টরি নয়। হয় কাজ করে তবে ওপেনসিভি অংশে রাখাই আমার কাছে পরিষ্কার মনে হয়। প্লাস আরো স্ক্রিনশট এবং "Gotchas" অংশ।
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
@ দেবেন্দ্রসিংহ আপনার মতোই ত্রুটি পেয়েছি তবে আমি বুঝতে পেরেছি যে আমি ৯

2
যদি আমরা অ্যান্ড্রয়েড স্টুডিওতে ওপেনসিভির জন্য সি ++ তে কোড করতে চাই তবে কী হবে?
ব্যবহারকারীর 8663682

37

প্রত্যেকের জন্য যারা অনুভব করেছেন যে তারা উপরের উত্তরগুলিতে (দুর্দান্ত!) সমস্ত পদক্ষেপ এবং স্ক্রিন শট নিয়ে পালাতে চান, এটি আমার পক্ষে কাজ করেছে android studio 2.2.1:

  1. একটি নতুন প্রকল্প তৈরি করুন, নিজের ইচ্ছামত নাম দিন এবং ডিফল্টটি নিন (minSdkVersion 15 ভাল আছে)।
  2. জিপ ফাইলটি এখান থেকে ডাউনলোড করুন: https://sourceforge.net/projects/opencvlibrary/files/opencv-android/ (আমি ৩.১.০ সংস্করণ ডাউনলোড করেছি, তবে আরও নতুন সংস্করণ থাকতে পারে)।
  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
    }
    

যেখানে এক্সওয়াইজেড হ'ল আপনার ডাউনলোড করা সঠিক সংস্করণ, উদাহরণস্বরূপ আমার ক্ষেত্রে:

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

1
দুর্দান্ত এবং সহজ, thnx ;-) সংস্করণ 3.2.0 এর জন্যও কাজ করে।
ব্ল্যাকার্নিয়া

2
ধন্যবাদ, সত্যই এটি সহজ সমাধান। আমার এক পয়েন্ট। নতুন ওপেনসিভি মডিউলটি সংকলন করা যায়নি। এখানে উত্তর আমাকে এই সমস্যাটি সমাধান করতে সহায়তা করেছে stackoverflow.com/a/40302788/408780
টিমা

@ ব্লাচার্নিয়া যা বলেছিলেন তা যুক্ত করার জন্য, কেবল নিশ্চিত করুন যে আপনি 310 এর পরিবর্তে ক্র্যাডল নির্ভরতা বিভাগে 'কমপাইল প্রজেক্ট (': openCVLibrary320 ')' ব্যবহার করছেন
আব্রাহাম ফিলিপ

সম্ভবত আরও সাধারণভাবে, উপরের মন্তব্যগুলিতে যুক্ত করতে, "সংকলন প্রকল্প (': ওপেনসিভিলিবারিয়ানএক্সজেড)) ব্যবহার করুন যেখানে এক্সওয়াইজেড' বিন্দু 'ছাড়াই ওপেনসিভি অ্যান্ড্রয়েড এসডিকে সংস্করণ সংখ্যা - এটি এখন 3.4.0 সংস্করণ সংস্করণেও কাজ করে - "সংকলন প্রকল্প (': openCVLibrary340')" ব্যবহার করুন
মিক

@ মাইকে ধন্যবাদ, আমি আপনার পরামর্শ অনুসারে উত্তরটি সম্পাদনা করেছি।
yshahak

9

অ্যান্ড্রয়েড স্টুডিও 3.4 + ওপেনসিভি 4.1

  1. এখান থেকে সর্বশেষতম ওপেনসিভি জিপ ফাইলটি ডাউনলোড করুন (বর্তমানের নতুন সংস্করণটি 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 অবশ্যই কোনও স্পেস থাকতে হবে না, তবে আপনি ত্রুটি পাবেন!

ওপেনসিভি সূচনা পরীক্ষা করতে মেইনএকটিভিটি onCreate()পদ্ধতিতে টোস্ট বার্তা যুক্ত করুন :

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

যদি সূচনা সফল হয় তবে আপনি trueটোস্ট বার্তায় দেখতে পাবেন অন্যথায় আপনি দেখতে পাবেন false


উপরে আপনি "অ্যাপ্লিকেশন আইডি প্রতিস্থাপন করুন" "org.opencv" "দিয়ে ....." বলছেন তবে "উইথ" অনুসরণ করে কিছুই নেই। আপনি দয়া করে পরিষ্কার করতে পারেন? আপনি কি বলতে চান "অ্যাপ্লিকেশনআইডি এন্ট্রি সরিয়ে দিন এবং নীচে দুটি এন্ট্রি যুক্ত করুন:"
ডেল

@ ডেল হ্যাঁ, আপনার application ID "org.opencv"দুটি স্ট্রিংয়ের সাথে স্ট্রিং প্রতিস্থাপন করা উচিত : minSdkVersion 21এবং targetSdkVersion 28(অ্যাপ্লিকেশন / বিল্ড.gradle ফাইলের মান অনুসারে)
Plo_Koon

আপনি বর্ণিত সমস্ত পদক্ষেপ আমি অনুসরণ করেছি। তবে ত্রুটি পেতে ই / আর্ট: ড্লোপেন ("/ ডেটা / অ্যাপ্লিকেশন / কম।
মস্তান

0

JniLibs সিপিপি তৈরির সময় যে কোনও সমস্যার মুখোমুখি হচ্ছে তাকে দেখানো হয়েছে .. অ্যাড এনডিকে যোগ করুন ..


0

এটি আমার পক্ষে কাজ করেছে এবং গ্রেড নির্ভরতা যুক্ত করার মতোই সহজ ছিল:

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

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

আর্ম ইমুলেটরগুলি আমার জন্য খুব ধীরগতিতে চলছিল বলে আমাকে একটি হার্ডওয়্যার ডিবাগিং ডিভাইস ব্যবহার করতে হয়েছিল (এভিডি ম্যানেজার হিসাবে তারা বলবে), এবং রেপো রেডএমই-তে বর্ণিত হিসাবে, এই সংস্করণটিতে x86 বা x86_64 সমর্থন অন্তর্ভুক্ত নয়।

এটি নির্মাণ এবং প্রস্তাবিত পরীক্ষা বলে মনে হচ্ছে:

static {
    OpenCVLoader.initDebug();
}

আমার কাছে ডানদিকে দেখায় এমন একগুচ্ছ আউটপুট sp


এটি অ্যান্ড্রয়েড স্টুডিওর একটি নতুন প্রকল্প থেকে হয়েছিল। আমি কিছু আমদানি করিনি, কিছু ডাউনলোড করি নি ইত্যাদি Just গ্রেড নির্ভরতা যুক্ত করুন এবং সিঙ্ক করুন।
নওমদেব

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.