Dengan perkembangan teknologi kecerdasan buatan yang semakin meningkat, sistem pengesanan sasaran memainkan peranan yang amat penting dalam bidang penglihatan komputer. Sistem ini secara automatik boleh mengenal pasti objek utama daripada imej atau video untuk menjejak dan menganalisis sasaran. Dalam artikel ini, kami akan memperkenalkan cara menulis sistem pengesanan objek berasaskan kecerdasan buatan menggunakan Java.
Pertama, kita perlu memasang Java dan OpenCV. Java ialah bahasa pengaturcaraan untuk menulis sistem pengesanan sasaran menggunakan Java, dan OpenCV ialah perpustakaan penglihatan komputer yang menyediakan banyak API dan alatan praktikal untuk memproses dan menganalisis imej. Kami boleh memasang dan mengkonfigurasi Java dan OpenCV melalui langkah berikut:
1.1 Pasang Java JDK
Java JDK boleh dimuat turun dari laman web rasmi. Selepas pemasangan selesai, anda perlu menetapkan pembolehubah persekitaran JAVA_HOME dan PATH. Dalam sistem Windows, anda boleh menambah kandungan berikut pada pembolehubah persekitaran:
Nama pembolehubah: JAVA_HOME
Nilai pembolehubah: C:Program FilesJavajdk1.8.0_45
Nama pembolehubah: PATH
Nilai pembolehubah: %
Variable_HOME1.2 Pasang OpenCV
OpenCV boleh dimuat turun dari laman web rasmi. Setelah muat turun selesai, nyahzip fail dan salin ke direktori kerja projek anda. Kemudian salin fail opencv-3.4.3.jar dalam folder ke folder lib projek. Akhir sekali, tambah folder perpustakaan tempatan pihak ketiga opencv uildjavad (di bawah Windows) atau opencv uildjavalib (di bawah Linux) dalam folder ke pembolehubah persekitaran laluan sistem.
Selepas kami menyelesaikan pemasangan dan konfigurasi Java dan OpenCV, kami boleh mula membina sistem pengesanan sasaran. Pertama, kita perlu memuatkan imej dan melakukan beberapa operasi asas. Kita boleh menggunakan kod berikut untuk mencapai operasi ini:
public static void main(String[] args) { // 载入图像 Mat image = Imgcodecs.imread("test.jpg"); // 缩放图像 Size size = new Size(800,600); Imgproc.resize(image,image,size); // 转换为灰度图像 Mat grayImage = new Mat(); Imgproc.cvtColor(image,grayImage,Imgproc.COLOR_BGR2GRAY); // 模糊处理 Imgproc.GaussianBlur(grayImage,grayImage,new Size(3,3),0); // 边缘检测 Mat edges = new Mat(); Imgproc.Canny(grayImage,edges,50,150); // 显示图像 HighGui.imshow("Test",edges); HighGui.waitKey(0); System.exit(0); }
Dalam kod ini, kita mula-mula menggunakan fungsi Imgcodecs.imread() untuk memuatkan imej daripada sistem fail setempat. Kemudian, kami menggunakan fungsi Imgproc.resize() untuk menskalakan imej kepada dimensi 800×600. Seterusnya, kami menukar imej kepada skala kelabu menggunakan fungsi Imgproc.cvtColor(). Kemudian, kami menggunakan fungsi Imgproc.GaussianBlur() untuk mengaburkan imej skala kelabu untuk mengurangkan hingar dan gangguan. Akhir sekali, kami menggunakan fungsi Imgproc.Canny() untuk pengesanan tepi untuk pengesanan sasaran seterusnya.
Selepas pemprosesan imej asas, kita boleh memulakan pengesanan sasaran. Untuk mencapai fungsi ini, kita perlu terlebih dahulu memilih algoritma pengesanan sasaran yang sesuai. Dalam artikel ini, kami akan menggunakan pengelas ciri Haar berasaskan OpenCV untuk pengesanan objek. Langkah-langkah pelaksanaan khusus adalah seperti berikut:
3.1 Pilih pengelas Haar yang sesuai
Pengkelas Haar ialah algoritma pengesanan sasaran klasik idea asasnya adalah untuk mengenal pasti objek dengan memerhati ciri morfologinya. Khususnya, pengelas Haar menggunakan nilai ciri dalaman untuk mewakili sasaran, yang diperoleh dengan mengira perbezaan nilai kelabu dalam kawasan sasaran. Jika ciri morfologi objek sasaran boleh diwakili oleh satu set nilai ciri, maka kita boleh menentukan sama ada objek sasaran wujud dalam imej dengan membandingkan nilai ciri ini.
Dalam artikel ini, kami akan menggunakan pengelas ciri Haar yang sudah terlatih yang disediakan oleh OpenCV untuk pengesanan sasaran. Pengelas ini sudah mengandungi sejumlah besar sampel positif dan negatif dan boleh dilatih melalui perambatan belakang.
3.2 Latihan pengelas Haar
Untuk memulakan pengesanan sasaran kecerdasan buatan, kita perlu menggunakan alat latihan terbina dalam OpenCV untuk melatih pengelas Haar. Proses latihan memerlukan set imej sampel positif dan negatif Biasanya, lebih banyak imej sampel, lebih baik kesannya.
3.3 Pengesanan sasaran
Melalui langkah di atas, kami telah menyelesaikan latihan pengelas Haar dan boleh menggunakannya untuk pengesanan sasaran. Di Java, kita boleh menggunakan kod berikut untuk melaksanakan pengesanan sasaran pengelas Haar:
public static void main(String[] args) { // 载入图像 Mat image = Imgcodecs.imread("test.jpg"); // 装载分类器 CascadeClassifier detector = new CascadeClassifier("classifier.xml"); MatOfRect targets = new MatOfRect(); // 检测目标 detector.detectMultiScale(image,targets); // 在图像上标示目标 for(Rect rect: targets.toArray()){ Imgproc.rectangle(image,rect.tl(),rect.br(),new Scalar(0,0,255),2); } // 显示图像 HighGui.imshow("Test",image); HighGui.waitKey(0); System.exit(0); }
Dalam kod ini, kita mula-mula menggunakan fungsi Imgcodecs.imread() untuk memuatkan imej daripada sistem fail tempatan. Kami kemudian membina objek pengelas menggunakan kelas CascadeClassifier dan menggunakannya untuk melakukan pengesanan pada imej. Hasil pengesanan disimpan dalam objek jenis MatOfRect. Akhir sekali, kami menggunakan fungsi Imgproc.rectangle() untuk menandakan sasaran pada imej, dan menggunakan fungsi HighGui.imshow() untuk memaparkan hasil pengesanan.
Dalam artikel ini, kami memperkenalkan cara menulis sistem pengesanan objek berasaskan kecerdasan buatan menggunakan Java. Kami mula-mula memperkenalkan pemasangan dan konfigurasi Java dan OpenCV, kemudian menunjukkan beberapa fungsi pemprosesan imej asas, dan akhirnya melaksanakan pengesanan objek menggunakan pengelas ciri Haar. Dengan asas pengetahuan dan kemahiran ini, pembaca boleh terus mempelajari dan meneroka aplikasi dan teknologi yang lebih mendalam dan maju dalam sistem pengesanan sasaran, seperti YOLO, RCNN, dll., untuk menyesuaikan diri dengan lebih baik kepada era kecerdasan buatan yang berkembang.
Atas ialah kandungan terperinci Cara menulis sistem pengesanan sasaran berasaskan kecerdasan buatan menggunakan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!