Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP memanggil kamera untuk pemprosesan imej masa nyata: perkongsian tutorial mudah

PHP memanggil kamera untuk pemprosesan imej masa nyata: perkongsian tutorial mudah

WBOY
WBOYasal
2023-07-31 16:01:171149semak imbas

PHP memanggil kamera untuk pemprosesan imej masa nyata: perkongsian tutorial mudah

Pemprosesan imej masa nyata kamera digunakan secara meluas dalam banyak senario, seperti pengawasan video, pengecaman muka, analisis imej, dsb. Untuk pembangun PHP, ia juga boleh dilakukan untuk mencapai pemprosesan imej masa nyata dengan memanggil kamera. Artikel ini akan berkongsi tutorial ringkas untuk mengajar anda cara menggunakan PHP untuk memanggil kamera untuk pemprosesan imej masa nyata.

  1. Pasang perisian dan pemacu yang sepadan
    Untuk menggunakan PHP untuk memanggil kamera, kita perlu memasang perisian dan pemacu yang sepadan terlebih dahulu. Dalam sistem Windows, anda boleh menggunakan perpustakaan pemacu kamera sumber terbuka OpenCV dan pemalam PHP php-opencv untuk mencapainya. Langkah pemasangan khusus adalah seperti berikut:

1.1 Muat turun dan pasang OpenCV
Anda boleh pergi ke tapak web rasmi OpenCV (https://opencv.org/) untuk memuat turun versi terkini OpenCV. Pilih pakej pemasangan yang sepadan mengikut sistem anda, muat turun dan lengkapkan pemasangan.

1.2 Pasang pemalam php-opencv
php-opencv ialah pemalam sambungan untuk pembangun PHP untuk mengendalikan perpustakaan OpenCV. Anda boleh mencari kod sumber pemalam di GitHub (https://github.com/opencv/opencv_contrib), muat turunnya, susun dan pasangnya. Langkah pemasangan khusus boleh dijalankan mengikut dokumentasi rasmi.

  1. Panggil kamera dan paparkan imej masa nyata
    Selepas memasang perisian dan pemacu yang berkaitan, kami boleh mula menulis kod PHP untuk memanggil kamera dan memaparkan imej masa nyata.
<?php
$video = new VideoCapture(0); // 打开默认摄像头

while (true) {
    $frame = $video->read(); // 读取摄像头的图像帧

    if ($frame !== null) {
        $image = cvimencode(".bmp", $frame); // 对图像帧进行编码
        echo "<img src="data:image/bmp;base64," . base64_encode($image) . ""/>"; // 显示图像
    }

    if (waitKey(1) >= 0) { // 按下任意键退出循环
        break;
    }
}

$video->release(); // 释放摄像头资源
?>

Kod di atas menggunakan pemalam php-opencv untuk membuka kamera lalai dan membaca bingkai imej kamera dengan menghubungi kelas VideoCapture. Bingkai imej kemudiannya dikodkan dan imej itu dipaparkan dalam penyemak imbas melalui pernyataan gema. Apabila sebarang kekunci ditekan, keluar dari gelung dan lepaskan sumber kamera.

  1. Pemprosesan imej masa nyata
    Selain memaparkan imej masa nyata, kami juga boleh melakukan pemprosesan masa nyata pada imej. Mengambil pengecaman muka sebagai contoh, kami boleh menggunakan algoritma pengecaman muka OpenCV untuk pengesanan muka masa nyata.
<?php
$video = new VideoCapture(0); // 打开默认摄像头

$cascade = new CascadeClassifier('haarcascade_frontalface_default.xml'); // 加载人脸识别模型

while (true) {
    $frame = $video->read(); // 读取摄像头的图像帧

    if ($frame !== null) {
        $gray = cvcvtColor($frame, cvCOLOR_BGR2GRAY); // 将彩色图像转换为灰度图像
        cvequalizeHist($gray, $gray); // 直方图均衡化增强对比度

        $faces = $cascade->detectMultiScale($gray); // 人脸检测

        foreach ($faces as $face) {
            cvectangle($frame, $face, new Scalar(0, 255, 0)); // 绘制人脸矩形
        }

        $image = cvimencode(".bmp", $frame); // 对图像帧进行编码
        echo "<img src="data:image/bmp;base64," . base64_encode($image) . ""/>"; // 显示图像
    }

    if (waitKey(1) >= 0) { // 按下任意键退出循环
        break;
    }
}

$video->release(); // 释放摄像头资源
?>

Selepas membaca bingkai imej daripada kamera, kod di atas mula-mula menukar imej berwarna kepada imej skala kelabu dan menggunakan penyamaan histogram untuk meningkatkan kontras. Kemudian gunakan model pengecaman muka yang dimuatkan untuk melakukan pengesanan muka dan lukis segi empat tepat muka yang dikesan. Akhirnya, bingkai imej dikodkan dan dipaparkan.

Melalui tutorial mudah di atas, kita boleh menggunakan PHP untuk memanggil kamera untuk pemprosesan imej masa nyata. Sudah tentu, algoritma dan prosedur pemprosesan yang lebih kompleks mungkin diperlukan dalam aplikasi sebenar, tetapi artikel ini menyediakan contoh peringkat permulaan, yang saya harap akan membantu anda mempelajari pemprosesan imej masa nyata. Jika anda berminat, anda boleh mempelajari dan meneroka lebih banyak fungsi dan antara muka yang disediakan oleh OpenCV dan php-opencv.

Atas ialah kandungan terperinci PHP memanggil kamera untuk pemprosesan imej masa nyata: perkongsian tutorial mudah. 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