Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan OpenCV dalam PHP untuk aplikasi penglihatan komputer

Menggunakan OpenCV dalam PHP untuk aplikasi penglihatan komputer

王林
王林asal
2023-06-19 15:09:431564semak imbas

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:

  1. Muat turun kod sumber pustaka sambungan PHP OpenCV, yang boleh didapati di github.
  2. Nyahzip pakej termampat yang dimuat turun dan masukkan direktori penyahmampatan.
  3. Laksanakan perintah phpize untuk menjana fail konfigurasi.
  4. Laksanakan perintah ./configure untuk menjana Makefile.
  5. Jalankan perintah make untuk menyusun kod sumber.
  6. Laksanakan perintah sudo make install untuk memasang pustaka sambungan.
  7. Tambahkan 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.

  1. Pengecaman muka

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.

  1. Segmentasi 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.

  1. Penjejakan Sasaran

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn