Penglihatan Komputer ialah salah satu cabang penting dalam bidang kecerdasan buatan Ia membolehkan komputer melihat dan memahami isyarat visual secara automatik seperti imej dan video, serta merealisasikan senario aplikasi seperti interaksi manusia-komputer dan kawalan automatik. OpenCV (Perpustakaan Penglihatan Komputer Sumber Terbuka) ialah perpustakaan penglihatan komputer sumber terbuka yang popular yang digunakan secara meluas dalam penglihatan komputer, pembelajaran mesin, pembelajaran mendalam dan bidang lain.
Artikel ini akan memperkenalkan kaedah dan langkah menggunakan OpenCV dalam PHP untuk melaksanakan aplikasi penglihatan komputer. Mula-mula, kita perlu memasang perpustakaan sambungan PHP OpenCV, dan kemudian menulis kod PHP untuk melaksanakan aplikasi penglihatan komputer.
Pasang pustaka sambungan PHP OpenCV
Pustaka sambungan PHP OpenCV menyediakan antara muka untuk menggunakan OpenCV dalam PHP. Jika anda telah memasang OpenCV dan PHP, anda boleh mengikuti langkah di bawah untuk memasang pustaka sambungan PHP OpenCV:
phpize
untuk menjana fail konfigurasi. ./configure
untuk menjana Makefile. make
untuk menyusun kod sumber. sudo make install
untuk memasang pustaka sambungan. extension=opencv.so
item konfigurasi dalam php.ini untuk membolehkan PHP memuatkan perpustakaan sambungan PHP OpenCV. Tulis kod PHP untuk melaksanakan aplikasi penglihatan komputer
Selepas memasang perpustakaan sambungan PHP OpenCV, anda boleh menulis kod PHP untuk melaksanakan aplikasi penglihatan komputer. Di bawah ini kami memperkenalkan beberapa contoh aplikasi penglihatan komputer biasa.
Pengecaman muka ialah salah satu aplikasi popular penglihatan komputer, yang boleh merealisasikan fungsi seperti pengesanan muka dan pengecaman muka. Berikut ialah kod contoh pengecaman muka mudah:
<?php $face_cascade = cvCascadeClassifier::load('/path/to/haarcascade_frontalface_default.xml'); $src = cvimread('/path/to/image.jpg'); $gray = cvcvtColor($src, cvCOLOR_BGR2GRAY); $faces = []; $face_cascade->detectMultiScale($gray, $faces, 1.1, 3, cvCASCADE_SCALE_IMAGE, [30, 30]); foreach ($faces as $face) { $pt1 = new cvPoint($face->x, $face->y); $pt2 = new cvPoint($face->x + $face->width, $face->y + $face->height); cvectangle($src, $pt1, $pt2, [0, 0, 255], 2); } cvimshow('Face Detection', $src); cvwaitKey();
Kod menggunakan kelas CascadeClassifier
OpenCV untuk memuatkan pengelas ciri Haar untuk pengesanan muka. Apabila wajah dikesan, gunakan fungsi cvectangle
untuk melukis kotak pengesanan muka pada imej.
Segmentasi imej ialah masalah penting dalam penglihatan komputer, tujuannya adalah untuk membahagikan piksel dalam imej kepada kawasan yang berbeza untuk analisis dan pemprosesan imej selanjutnya. Berikut ialah kod sampel pembahagian imej:
<?php $src = cvimread('/path/to/image.jpg'); $gray = cvcvtColor($src, cvCOLOR_BGR2GRAY); $median = cvmedianBlur($gray, 5); $thresh = cvdaptiveThreshold($median, 255, cvADAPTIVE_THRESH_GAUSSIAN_C, cvTHRESH_BINARY, 11, 2); $dst = new cvMat(); cvdistanceTransform($thresh, $dst, cvDIST_L2, cvDIST_MASK_5); cv ormalize($dst, $dst, 0, 1.0, cvNORM_MINMAX); $heatmap = new cvMat(); cvpplyColorMap($dst, $heatmap, cvCOLORMAP_JET); cvimshow('Segmentation', $heatmap); cvwaitKey();
Kod menggunakan penapisan median, pemprosesan ambang penyesuaian, transformasi jarak dan algoritma lain untuk mencapai pembahagian imej. Selepas pembahagian, gunakan fungsi cvpplyColorMap
untuk menggambarkan peta haba imej.
Penjejakan sasaran boleh merealisasikan fungsi menjejak sasaran khusus dalam video dan merupakan hala tuju penyelidikan penting dalam penglihatan komputer. Berikut ialah kod sampel penjejakan sasaran:
<?php $tracker = cvTrackerMedianFlow::create(); $src = cvVideoCapture::create('/path/to/video.mp4'); $src->set(cvCAP_PROP_POS_FRAMES, 0); $src->read($frame); $bbox = cvselectROI($frame, false); $tracker->init($frame, $bbox); while ($src->read($frame)) { $success = $tracker->update($frame, $bbox); if ($success) { cvectangle($frame, $bbox, [0, 255, 0], 2, 1); } else { cvputText($frame, 'Tracking failure detected', new cvPoint(100, 80), cvFONT_HERSHEY_SIMPLEX, 0.75, [0, 0, 255], 2); } cvimshow('Object Tracking', $frame); if (cvwaitKey(1) == 27) { break; } }
menggunakan kelas TrackerMedianFlow
OpenCV dalam kod untuk melaksanakan penjejakan sasaran. Dalam setiap bingkai, gunakan fungsi tracker->update
untuk mengemas kini kotak sasaran dan gunakan fungsi cvectangle
untuk melukis kotak penjejakan dalam imej.
Ringkasan
Artikel ini memperkenalkan kaedah dan langkah untuk menggunakan OpenCV dalam PHP untuk melaksanakan aplikasi penglihatan komputer. Dengan memasang perpustakaan sambungan PHP OpenCV dan menulis kod PHP, anda boleh melaksanakan pelbagai aplikasi penglihatan komputer dengan mudah, seperti pengecaman muka, pembahagian imej, penjejakan sasaran, dsb. Aplikasi ini boleh memainkan peranan penting dalam pemantauan keselamatan, interaksi manusia-komputer, kawalan automasi dan bidang lain.
Atas ialah kandungan terperinci Menggunakan OpenCV dalam PHP untuk aplikasi penglihatan komputer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!