استارت‌آپ و کارآفرینی

پردازش تصویر در PHP با کمک OpenCV

پردازش تصویر علمی است که تحت آن بر روی تصاویر دیجیتال، اعمال خاصی برای مقاصد خاص انجام می‌شود. یک کاربرد تقریبا تزئینی آن را در گوشی های تلفن همراه و دوربین‌های دیجیتال دیده‌اید؛ همان تشخیص چهره افراد در هنگام عکاسی.

در صنعت، راهنمایی رانندگی، نظامی و پزشکی از پردازش تصویر بسیار استفاده می شود. بعنوان مثال وقتی می‌خواهید وارد طرح ترافیک در شهر تهران بشوید دوربین‌های قرار گرفته در ورودی محدوده طرح ترافیک، تصویری رنگی را از پشت خودروی شما می‌گیرد و به مرکز پردازش تصویر ارسال می‌کند، پس از پردازش پلاک خودروی شما از روی تصویر دریافتی، مقایسه‌ای با دیتابیس پلاک‌های مجاز به عبور و مرور در محدوده طرح ترافیک انجام می‌گیرد و در صورت عدم وجود پلاک خودروی شما در پلاک‌های مجاز، جریمه ورود به طرح برای شما منظور می‌گردد.

برای پردازش تصویر کتابخانه‌ای با نام OpenCV به زبان ++C موجود است. این کتابخانه قابلیت‌های متعددی برای پردازش تصویر ارائه می‌دهد. برای پتلفرم‌های مختلف قابل استفاده است. همچنین با کمک آن می‌توانید در زبان‌های مختلف برنامه نویسی برای آن کدهای پردازش تصویر بنویسید.

 

نمونه‌ای از قابلیت‌های این کتابخانه را در اینجا می‌توانید مشاهده کنید.

در ادامه تصمیم دارم یک نمونه کوچک برای دوستانی که در PHP کدنویسی می‌کنند را پیاده کنم تا با طرز کار این کتابخانه پردازش تصویر آشنا شوید.

به تصویر زیر نگاه کنید:

boys

 

حال به همان تصویر نگاه کنید، اما پس از پردازش شدن توسط کدهای PHP، با کمک OpenCV:

test2.php

کد PHP:

//Original picture for processing
$imgname = 'boys.jpg';

$im = @imagecreatefromjpeg($imgname); /* Attempt to open */
if (!$im) { /* See if it failed */
    $im  = imagecreate(150, 30); /* Create a blank image */
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc  = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
    /* Output an errmsg */
    imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
}		

$yellow = imagecolorallocate($im, 235, 255, 0);	

$faces  = face_detect($imgname ,'/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt2.xml');
foreach ($faces as $face) {
	imagerectangle($im,$face['x'], $face['y'], $face['x']+$face['w'], $face['y']+$face['h'], $yellow);
}

header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

 

نحوه نصب اکستنشن PHP برای تشخیص چهره: php-facedetect

لازم به ذکر است که قبل از استفاده از اکستنشن فوق نیاز به نصب OpenCV دارید.

20 نظرات
  1. androider می گوید

    عالی بود
    چه اکستنشن جالبی

  2. مهراد قطب‌الدینی می گوید

    چجوری اوپن سی وی رو نصب کنیم؟

    1. علی ذوقی می گوید
  3. وحید می گوید

    خیلی عالی بود.
    آقای ذوقی باز هم از این مطلب ها بگذار لطفا.
    اگه در مورد لاراول هم آموزش خوب داری بگذار.
    ممنون

    1. علی ذوقی می گوید

      خداروشکر
      ان شاءالله حتما
      مقاله ای درباره لاراول توسط دوست خوبمون امیر حبیب زاده نوشته شده.
      لینک مقاله:
      https://startups.ir/%d9%85%d8%b9%d8%b1%d9%81%db%8c-%d9%81%d8%b1%db%8c%d9%85%e2%80%8c%d9%88%d8%b1%da%a9-%d9%84%d8%a7%d8%b1%d8%a7%d9%88%d9%84-laravel/

  4. مرضیه می گوید

    سلام ممکنه اگر لینکی میشناسید که به زبان آندروید این کار را با opencv انجام میده معرفی کنید؟ممنون

    1. علی ذوقی می گوید

      سلام
      سایت opencv خودش توضیحاتی ارائه داده درباره چگونگی شروع کار با opencv در محیط اندروید

      http://opencv.org/platforms/android.html
      http://developer.sonymobile.com/knowledge-base/tutorials/ui-graphics/get-started-with-opencv-on-android/

  5. mohammad می گوید

    با سلام
    متوجه شدم که شما سه سال است که فریم ورک yii2 را به صورت عملی شروع به کار کرده اید،لطفا نمونه ای از پروژه ها و فایل های مهمی که در این زمینه دارید،برای بنده بفرستید.
    اجرتان با آقا ابا عبدالله

    1. علی ذوقی می گوید

      سلام بزرگوار
      شما چه کاری میخواهید انجام دهید؟

  6. مهدی می گوید

    جناب اقای ذوقی -با سلام

    من دارم روی یک کار تحقیقاتی تشخیص لبه پانچ متال فلزی کار میکنم ( ۱٫۵ میلی متر پانچ ۳ میلیمتر متال مجدد ۱٫۵ میلیمتر پانچ و الی اخر و ضخامت متال ۱ میلی متر و عرض متال ۳۰ میلی متر ) و در حال نصب opencv2.3.1 در visual studio 2010 هستم با توجه به اینکه تا حالا با ماشین بینایی در ++c را کار نکرده ام . در صورت امکان برنامه مشابه قابل اجرا تشخیص لبه پانچ را برایم بفرستیدو در صورتی که ابعاد پاچ با ابعاد گفته شده یکی نباشد اعلام خطا کند .با سپاس و تشکر- بدری

    1. علی ذوقی می گوید

      سلام دوست بزرگوار
      اصولا پردازش تصویر رو باید خودتون محاسبه و طراحی کنید. کتابخانه هایی مثل opencv بهتون یک سری ابزار میدن که بتونید راحت تر پردازش رو پیاده سازی نرم افزاری کنید.

      لینک زیر رو مشاهده کنید.
      http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

  7. مهدی ربانی می گوید

    سپاس. میشه در مورد خود پردازش توضیح بدید. در مورد خود opencv بگید که به چه الگوریتمی چنین کاری رو روی تصاویر انجام میده؟

    1. علی ذوقی می گوید

      سلام بزرگوار
      اسلاید زیر یه دید کلی درباره طرز نمایش تصاویر و درنتیجه نحوه پردازش رو بهتون میده.

      http://www.slideshare.net/hruizguzman/opencv-images-processing

  8. امیر می گوید

    سلام مهندس خسته نباشید برای افزودن این کتابخانه(opencv) به php باید چه مراحلی رو انجام داد

    1. علی ذوقی می گوید

      سلام بزرگوار
      https://github.com/mgdm/OpenCV-for-PHP

      طریقه نصب هم لینک زیر:
      https://github.com/mgdm/OpenCV-for-PHP/issues/14

  9. Mohsen می گوید

    سلام . آقای ذوقی برای نصب ” اوپن سی وی ” رو هاست لینوکس باید چکار کنم ؟

    1. علی ذوقی می گوید

      سلام بزرگوار
      برای هاست اشتراکی باید از پشتیبان سرورتون درخواست کنید که نصب کنه.

  10. فرهاد می گوید

    سلام اقای ذوقی، می خواستم یه کمکی به من کنید. من اخیرا php رو دارم یاد میگیرم همرا با دیتا بیس، میخواستم یه وب اپلیکیشن مثل چیزی که در این سایت هست بسازم:http://www.imamali.net/vtour
    یعنی عکس های دو بعدی رو به هم چسبوندن و یک فضای سه بعدی ایجاد کردن. این سایت با php ساخته شده، لطفا اگر میتونید راهنمایی ام کنید که از چه ابزارهایی برای این کار باید استفاده کرد. ممنون

  11. فرهاد می گوید

    سلام. من یک سوال اینجا مطرح کردم، چرا اون پاک شده است؟؟

  12. netwons می گوید

    میشه بیشتر در موردopencv در php بگید و آیا کتابخانه های دیگری به جزopen cv وجود دارد

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.