OpenCV یک کتابخانه بزرگ منبع باز برای بینایی کامپیوتر، یادگیری ماشین و پردازش تصویر است. OpenCV از طیف گسترده ای از زبان های برنامه نویسی مانند Python، C++، Java و غیره پشتیبانی می کند. می تواند تصاویر و ویدیوها را برای شناسایی اشیا، چهره ها یا حتی دست خط یک انسان پردازش کند. هنگامی که با کتابخانه های مختلف، مانند Numpy که یک کتابخانه بسیار بهینه شده برای عملیات عددی است، ادغام می شود، هر عملیاتی که می توان در Numpy انجام داد را می توان با OpenCV ترکیب کرد.
کتابخانه تصویربرداری پایتون (PIL) بسته پردازش تصویر واقعی برای زبان پایتون است. این کتابخانه شامل ابزارهای پردازش تصویر سبک است که به ویرایش، ایجاد و ذخیره تصاویر کمک می کند. پشتیبانی از Python Imaging Library در سال 2011 متوقف شد، اما پروژه ای به نام pillow پروژه اصلی PIL را دوشاخه کرد و پشتیبانی Python3.x را به آن اضافه کرد. pillow به عنوان جایگزینی برای PIL برای استفاده در آینده اعلام شد. Pillow از فرمت های فایل تصویری متعددی از جمله BMP، PNG، JPEG و TIFF پشتیبانی می کند. این کتابخانه با ایجاد رمزگشاهای فایل جدید، پشتیبانی از فرمت های جدیدتر را در کتابخانه اضافه می کند.
تفاوت اساسی بین تصویر OpenCV و تصویر PIL این است که OpenCV از قرارداد رنگ BGR پیروی می کند و PIL از قرارداد رنگ RGB پیروی می کند و روش تبدیل بر اساس این متفاوت خواهد بود.
روش حل:
- ماژول را ایمپورت کنید
- تصویر ورودی را با استفاده از متد imread از کتابخانه cv2 می گیریم.
نحو:
imread(path, flag)
پارامتر ها:
- path: رشته ای که مسیر تصویر را نشان می دهد.
- flag: نحوه خواندن تصویر را مشخص می کند. مقدار پیش فرض آن cv2.IMREAD_COLOR است.
مقدار بازگشتی: این متد، تصویری را که از فایل مشخص شده بارگذاری شده است، برمی گرداند.
- سپس از متد cv2.cvtColor() از کتابخانه cv2 برای تغییر قرارداد رنگ استفاده خواهیم کرد.
سینتکس:
cvtColor(src, code[, dst[, dstCn]])
پارامتر ها:
- src: تصویری است که قرار است قرارداد رنگ آن تغییر کند.
- code: کد تبدیل فضای رنگ است.
- dst: مسیر تصویر خروجی با اندازه و عمق تصویر src. این یک پارامتر اختیاری است.
- dstCn: تعداد کانال های موجود در تصویر مقصد است. اگر پارامتر 0 باشد، تعداد کانال ها به طور خودکار از src و کد استخراج می شود. این یک پارامتر اختیاری است.
مقدار خروجی: یک تصویر را برمی گرداند.
در زیر پیاده سازی با استفاده از رویکرد فوق ارائه شده است.
برنامه:
# Python program to convert from openCV2 to PIL
import cv2
from PIL import Image
# Open image using openCV2
opencv_image = cv2.imread("logo.png")
# Notice the COLOR_BGR2RGB which means that the color is
# converted from BGR to RGB
color_coverted = cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB)
# Displaying the Scanned Image by using cv2.imshow() method
cv2.imshow("OpenCV Image", opencv_image)
# Displaying the converted image
pil_image = Image.fromarray(color_coverted)
pil_image.show()
# waits for user to press any key
# (this is necessary to avoid Python kernel form crashing)
cv2.waitKey(0)
# closing all open windows
cv2.destroyAllWindows()
ورودی:
خروجی:
- تصویر OpenCV:
- تصویر PIL:
دیدگاهها