Memindahkan proyek OpenCV dari Desktop C++ ke Android NDK

Tujuan saya adalah untuk menguji beberapa modifikasi pada algoritma OpenCV, khususnya detektor dan deskriptor fitur ORB. Jadi saya mulai mengembangkan di desktop saya dengan C++ dan saya menyalin beberapa file .cpp dari sumber OpenCV, khususnya orb.ccp, fast.cpp, precomp.cpp, fast_score.cpp. Yang pertama adalah file utama algoritma, yang kedua adalah pendeteksi fitur yang digunakan oleh ORB, yang ketiga dan keempat diperlukan seperti yang disebut dengan "termasuk" di fast.cpp. Jelas saya menyalin header dan deklarasi metode dari OpenCV .hpp(s), membuat header saya. Saya mengubah nama dua kelas yang terlibat (ORB dan FAST -> myORB dan myFAST) di semua file, sehingga Anda dapat membedakan panggilan ke versi algoritma saya dari OpenCV, karena OpenCV masih diperlukan untuk semua fungsi imgproc, inti, kelas Mat ... digunakan di dalam file cpp yang dimodifikasi.

Sejauh ini bagus, berfungsi, saya dapat menggunakan versi ORB saya yang disalin dan akhirnya menerapkan perubahan pada algoritme.

Masalah muncul ketika saya beralih ke Android NDK. Apa yang saya lakukan setelah mengatur proyek dengan NDK adalah membuat metode JNI di mana saya mengimplementasikan kode yang akan menggunakan algoritma ORB, kemudian saya mengimpor file saya .cpp dan .hpp di atas, mengatur file .mk dan lainnya yang terkait. barang-barang untuk mengkompilasi file saya, dan jelas menyiapkan proyek untuk menggunakan OpenCV4Android.

Masalahnya adalah sebagai berikut: algoritme saya berfungsi, kode dikompilasi/dibangun dan diluncurkan oleh Eclipse ADT, dan saya dapat memanggil kelas myORB. Namun ketika saya membuka file versi saya, misalnya (saya)orb.cpp, di editor ADT, masalah muncul: kode memiliki lusinan kesalahan, relatif terhadap metode (opencv) yang tidak ada ("tidak dapat diselesaikan" ), metode (opencv) dipanggil dengan argumen yang tidak valid ... Jadi setelah saya membuka file itu menunjukkan kesalahan, dan kemudian tidak mungkin untuk membangun proyek di ADT lagi, tetapi jika saya menghapus dan menyalin kembali file .cpp ke proyek itu dikompilasi lagi tanpa masalah sampai saya membukanya lagi...


person Alessandro Gaietta    schedule 26.06.2013    source sumber


Jawaban (1)


Masalahnya disebabkan oleh Android ADT dan/atau Android NDK. Editor mengidentifikasi kesalahan palsu, pada kenyataannya, Konsol menunjukkan bahwa kode C dikompilasi tanpa kesalahan. Namun Eclipse tidak memperbolehkan menjalankan kode/aplikasi yang menurutnya mengandung error. Jadi cara tercepat untuk menyiasatinya adalah dengan mengubah properti proyek di:

Project -> Properties -> C / C + + General -> Code Analysis

mengubah "keparahan" dari "masalah" yang muncul di editor menjadi "peringatan" atau jenis lainnya.

person Alessandro Gaietta    schedule 18.07.2013
comment
woo, terima kasih itu berhasil untuk saya tetapi ini bukan solusi nyata ...... apakah ada solusi untuk masalah ini - person MolhamStein; 18.03.2014