Heim  >  Artikel  >  Backend-Entwicklung  >  Erkennung verschwommener Bilder in Laravel

Erkennung verschwommener Bilder in Laravel

Susan Sarandon
Susan SarandonOriginal
2024-10-06 14:10:29450Durchsuche

Blurry Image Detection in Laravel

Artikel berasal dari https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

Aspek penting dalam pengalaman pengguna, menyimpan imej kabur dengan ketara menjejaskan kualiti tapak web atau aplikasi. Artikel ini membincangkan cara anda boleh mengesan dan mengurus imej kabur menggunakan Laravel dengan bantuan Python dan OpenCV, memastikan media aplikasi kekal tajam dan menarik.

Cabaran Imej Kabur

Imej kabur bukan sekadar gangguan visual; mereka boleh menjejaskan profesionalisme tapak web atau apl anda. Dalam e-dagang, penyenaraian hartanah, galeri dalam talian atau mana-mana platform yang kualiti imej adalah diutamakan, memastikan kejelasan adalah penting. Cabarannya terletak pada mengesan kekaburan secara atur cara.

Laravel untuk Menyelamat

Laravel boleh dipasangkan dengan Python untuk mencipta penyelesaian yang berkesan untuk masalah ini. Dengan memanfaatkan pengesahan fail Laravel bersama skrip Python yang menggunakan OpenCV, pembangun boleh menyepadukan pengesanan kabur dengan lancar ke dalam proses muat naik fail mereka.

Konsep Pengesanan Kekaburan

Pengesanan imej kabur melibatkan analisis ketajaman imej. Ini biasanya dilakukan menggunakan operator Laplacian, alat matematik yang digunakan dalam pemprosesan imej. Pengendali Laplacian mengukur kadar perubahan intensiti piksel dan varians yang lebih rendah bagi Laplacian menunjukkan imej yang lebih kabur.

Melaksanakan dalam Laravel

Dalam Laravel, kami boleh membuat peraturan pengesahan tersuai untuk menyemak kekaburan imej. Peraturan ini melaksanakan skrip Python yang menggunakan operator Laplacian untuk menentukan ketajaman imej. Mari pecahkan prosesnya:

Pemasangan OpenCV Python:

Pasang PIP (Ubuntu) :


sudo apt install python3-pip


Pasang OpenCV menggunakan PIP


pip3 install opencv-python


Anda mungkin ingin mempertimbangkan untuk memasang di bawah **www-data** pengguna jika aplikasi anda berjalan di bawah **www-data**. Jika Ya, ikut arahan di bawah untuk memasang


<p>sudo mkdir /var/www/.local<br>
sudo mkdir /var/www/.cache<br>
sudo chown www-data.www-data /var/www/.local<br>
sudo chown www-data.www-data /var/www/.cache<br>
sudo -H -u www-data pip3 install opencv-python</p>




Cipta Skrip Python



<p>import sys<br>
import cv2</p>

<p>def get_image_laplacian_value(image_path):<br>
    image = cv2.imread(image_path)<br>
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)<br>
    return cv2.Laplacian(gray_image, cv2.CV_64F).var()</p>

<p>if <strong>name</strong> == "<strong>main</strong>":<br>
    if len(sys.argv) != 2:<br>
        sys.exit(1)<br>
    image_path = sys.argv[1]<br>
    laplacian_value = get_image_laplacian_value(image_path)<br>
    print(laplacian_value)</p>




Cipta Peraturan Laravel:



<p>class ImageBlurDetectionRule implements ValidationRule<br>
{<br>
    public function validate(string $attribute, mixed $value, Closure $fail): void<br>
    {<br>
        if ( ! $value instanceof UploadedFile) {<br>
            return;<br>
        }<br>
        // ignore if not image<br>
        if ('' !== $value->getPath() && ! in_array($value->guessExtension(), ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'])) {<br>
            return;<br>
        }<br>
        // get real path for the file<br>
        $path = $value->getRealPath();<br>
        $command = escapeshellcmd(config('image.python_path') . " blur_detection.py '{$path}'");<br>
        $result = Process::path(base_path('scripts'))->run($command);<br>
        if ( ! $result->successful()) {<br>
            return;<br>
        }<br>
        if (trim($result->output()) < 100) {<br>
            $fail(__('Blur image are not accepted. Please make sure your :attribute image is clearly visible.'));<br>
        }<br>
    }<br>
}</p>




Cara Ia Berfungsi

Penyepaduan Laravel dengan skrip Python untuk pengesanan kabur berfungsi dengan lancar, menawarkan pendekatan yang canggih namun mudah untuk memastikan kualiti imej. Begini cara proses itu berlaku:

Muat Naik Imej

Apabila pengguna memuat naik imej ke aplikasi Laravel, peraturan pengesahan tersuai (ImageBlurDetectionRule) akan dicetuskan.

Pelaksanaan Peraturan Pengesahan

Peraturan ini terlebih dahulu menyemak sama ada fail yang dimuat naik sememangnya imej dengan mengesahkan sambungannya. Jika fail itu bukan imej, prosesnya berhenti di sini.

Seruan Skrip Python

Jika fail ialah imej, peraturan itu kemudian memanggil skrip Python, blur_detection.py. Laluan imej dihantar ke skrip ini sebagai hujah baris perintah.

Pemprosesan Imej dalam Python:

  • Skrip Python menggunakan OpenCV untuk mengendalikan analisis imej.
  • Skrip membaca imej dan menukarnya kepada skala kelabu. Penyederhanaan ini membolehkan analisis yang lebih mudah tanpa kerumitan warna.
  • Ia kemudian menggunakan operator Laplacian pada imej skala kelabu. Pengendali Laplacian ialah alat matematik yang menyerlahkan kawasan perubahan intensiti pantas, yang biasanya merupakan tepi dalam imej. Imej kabur mempunyai bahagian tepi yang semakin berkurangan, menghasilkan varians Laplacian yang lebih rendah.

Pengukuran Kekaburan

Skrip mengira varians Laplacian, yang berfungsi sebagai ukuran ketajaman imej. Varians yang lebih rendah menunjukkan imej yang lebih kabur.

Penilaian Keputusan:

  • Skrip mengeluarkan varians Laplacian sebagai nilai berangka.
  • Kembali ke Laravel, peraturan pengesahan menangkap output ini dan menyemak sama ada nilai jatuh di bawah ambang yang telah ditetapkan. Ambang ini menentukan sama ada imej dianggap cukup tajam.

Maklum Balas Pengesahan

Jika imej terlalu kabur (cth: varians Laplacian berada di bawah ambang), peraturan pengesahan gagal dan pengguna menerima mesej yang menunjukkan bahawa imej itu kabur dan harus diperiksa.

Peningkatan Pengalaman Pengguna

Dengan menghalang muat naik imej kabur berkualiti rendah, penyelesaian ini meningkatkan keseluruhan pengalaman pengguna. Pengguna digesa untuk hanya memuat naik imej yang jelas dan berkualiti tinggi, yang mengekalkan standard visual aplikasi.


Dieser Prozess ist in hohem Maße anpassbar. Entwickler können den Schwellenwert für Unschärfe entsprechend den spezifischen Anforderungen ihrer Anwendung anpassen. Beachten Sie, dass der Schwellenwert auf Ihrer Beobachtung basiert. Für die Vorabnutzung ist möglicherweise ML erforderlich, um den Schwellenwert zu bestimmen. Darüber hinaus ermöglicht die Integration von Python in Laravel eine weitere Erweiterung um fortschrittlichere Bildverarbeitungstechniken und bietet eine flexible und robuste Lösung für die Verwaltung der Bildqualität.

Praktische Anwendung

Die Integration dieser Funktionalität in Ihre Laravel-Anwendung verbessert das Benutzererlebnis, indem das Hochladen von Bildern mit geringer Qualität verhindert wird. Dies ist besonders nützlich in Szenarien, in denen die Bildklarheit von entscheidender Bedeutung ist, wie z. B. Online-Portfolios, Produktkataloge oder Benutzerprofilbilder.

Anpassung und Flexibilität

Der Schwellenwert für Unschärfe kann je nach Bedarf angepasst werden. Darüber hinaus bietet die Integration von Python in Laravel die Flexibilität, bei Bedarf fortschrittlichere Bildverarbeitungstechniken zu integrieren.

Abschluss

Die Kombination von Laravel und Python zur Erkennung verschwommener Bilder ist eine leistungsstarke Lösung. Es stellt nicht nur die visuelle Qualität Ihrer Anwendung sicher, sondern verbessert auch das gesamte Benutzererlebnis. Mit diesem Ansatz können Entwickler hohe Standards für Medieninhalte aufrechterhalten und so zu einer ausgefeilteren und professionelleren Online-Präsenz beitragen.


Haben Sie versucht, diese Lösung in Ihrem Laravel-Projekt zu implementieren? Teilen Sie Ihre Erfahrungen und Erkenntnisse, die Sie gewonnen haben, in den Kommentaren unten. Lassen Sie uns gemeinsam die Standards der Webentwicklung weiter erhöhen!

Das obige ist der detaillierte Inhalt vonErkennung verschwommener Bilder in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn