نحوه استفاده از چند کتابخانه معروف برای ایجاد ابزار پالت رنگ خود را بیاموزید.
انسان می تواند حدود 10 میلیون رنگ را تشخیص دهد. برای درک آنها، به چیزی نیاز دارید که به عنوان پالت رنگ شناخته می شود. یک پالت رنگ شامل ابزارهایی برای نمایش طیف کامل رنگ های قابل مشاهده برای چشم انسان است. در دنیای واقعی، شما از آنها برای ایجاد طرح های زیبایی بر روی کاغذ استفاده می کنید، در حالی که به صورت دیجیتالی از آنها برای افزودن رنگ به عناصر صفحه استفاده می کنید.
در نهایت، کامپیوتر شما تمام سایه های مختلفی را که روی صفحه نمایش خود می بینید با استفاده از یک فرمت خاص رمزگذاری می کند. با پایتون، به لطف ماژول OpenCV و NumPy می توانید یک پالت رنگی رمزگذاری شده با RGB را تنها در چند خط کد ایجاد کنید.
ماژول OpenCV و NumPy
شما می توانید تصاویر و ویدئوها را با استفاده از OpenCV تجزیه و تحلیل کنید. این رایگان، منبع باز، ساده برای استفاده، و بسته بندی شده با کتابخانه های مفید است. اینها تکنیک هایی را برای طبقه بندی، مکان یابی و ردیابی اشیاء در دو بعد و سه بعدی ارائه می کنند. برای نصب OpenCV در محیط خود، یک ترمینال باز کنید و اجرا کنید:
pip install opencv-python
ماژول NumPy یکی دیگر از کتابخانه های محبوب است که بسیاری از برنامه های پایتون از آن استفاده می کنند. NumPy – عددی پایتون – ماژولی است که می توانید برای تجزیه و تحلیل داده ها و محاسبات علمی استفاده کنید. اشیاء آرایه n بعدی و همچنین عملیات ریاضی را فراهم می کند که به دستکاری این آرایه ها کمک می کند.
برای نصب NumPy در محیط خود، اجرا کنید:
pip install numpy
به طور کلی، شما از OpenCV برای پردازش تصاویر با استفاده از تکنیک هایی مانند تشخیص لبه استفاده خواهید کرد. سپس می توانید از NumPy برای انجام تجزیه و تحلیل داده ها بر روی تصویر پردازش شده استفاده کنید. با استفاده از این ترکیب میتوانید یک کد QR ایجاد و رمزگشایی کنید، تصاویر را طبقهبندی کنید، تشخیص کاراکترهای نوری را انجام دهید، و سیستمهای نظارت تصویری بسازید که میتواند حرکت را تشخیص داده و افراد را در زمان واقعی ردیابی کند.
چگونه با استفاده از پایتون یک پالت رنگ بسازیم
این مراحل را برای ساختن یک پالت رنگ با استفاده از ماژول OpenCV و NumPy در پایتون دنبال کنید.
می توانید منبع پالت رنگ را با استفاده از پایتون در این مخزن GitHub پیدا کنید.
با وارد کردن ماژول های OpenCV و NumPy شروع کنید. تابعی به نام()()() که حاوی عبارت pass است را تعریف کنید. عبارت pass به عنوان یک مکان نگهدار برای کدهایی عمل می کند که می توانید در آینده بنویسید. این به ویژه برای توابعی مانند createTrackbar مفید است که بعداً از آن استفاده خواهید کرد. این به یک تابع پاسخ به تماس معتبر نیاز دارد و شما میتوانید فعلاً آن را بهعنوان جایبانی ارسال کنید.
import cv2
import numpy as np
def emptyFunction():
pass
با استفاده از تابع zero()NumPy یک آرایه سه بعدی به اندازه 512 * 512 * 3 با نوع داده uint8 ایجاد کنید. هر آرایه از 512 ستون و 512 ردیف تشکیل شده است. uint8 یک عدد صحیح بدون علامت را نشان می دهد، بنابراین برنامه آرایه را با صفر پر می کند.
image = np.zeros((512, 512, 3), np.uint8)
نام پنجره ای که برنامه نمایش داده می شود را تنظیم کنید و آن را به تابع namedWindow() ارسال کنید تا یک پنجره ایجاد شود:
windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)
در مرحله بعد، سه نوار مسیر برای اجزای رنگ قرمز، سبز و آبی ایجاد کنید. می توانید این کار را با استفاده از تابع ()createTrackbar OpenCV انجام دهید. ابتدا برچسب را قرمز، آبی یا سبز ارسال کنید. در مرحله دوم، شما باید نام پنجره ای را که می خواهید این نوارها را در آن قرار دهید، به عنوان مثال windowName ارسال کنید.
پارامتر سوم حداقل حد نوار آهنگ است که در این مورد 0 است. پارامتر چهارم حداکثر مقدار را مشخص می کند که برای یک مقدار رنگ 24 بیتی 255 است. پنجمین و آخرین پارامتر یک تابع فراخوانی است که createTrackbar برای آن به یک تابع معتبر نیاز دارد. به همین دلیل است که شما قبلاً valaFunction را ایجاد کردید تا به عنوان یک مکان نگهدار عمل کند.
cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)
یک حلقه while بی نهایت اعلام کنید و نام پنجره را به همراه تصویری که می خواهید نمایش دهید به تابع imshow() OpenCV ارسال کنید. از آنجایی که تصویر حاوی یک آرایه سه بعدی صفر است، برنامه در ابتدا یک صفحه سیاه نمایش می دهد.
بررسی کنید که آیا کاربر کلید escape را با آزمایش مقدار Waitkey() در مقابل 27 (کد ASCII برای کلید Escape) فشار داده است یا خیر. تابع Waitkey() پنجره را برای تعداد میلی ثانیه داده شده یا تا زمانی که یک کلید را فشار دهید نمایش می دهد. با ارسال یک به عنوان ورودی، پنجره را برای یک میلی ثانیه نمایش می دهد اما به دلیل حلقه while بی نهایت دوباره تولید می شود.
برای بدست آوردن موقعیت فعلی نوار مسیر، نام نوار مسیر را به همراه نام پنجره به getTrackbarPos() ارسال کنید. این مرحله را برای سه جزء رنگی مجزا یعنی آبی، سبز و قرمز تکرار کنید. از عملگر slice برای اختصاص دادن سه مقدار به آرایه تصویر استفاده کنید. این مجموعه مقادیر قبلی، در ابتدا همه صفرها را با مقادیر فعلی مطابق با موقعیت نوار آهنگ جایگزین می کند.
while (True):
cv2.imshow(windowName, image)
if cv2.waitKey(1) == 27:
break
blue = cv2.getTrackbarPos('Blue', windowName)
green = cv2.getTrackbarPos('Green', windowName)
red = cv2.getTrackbarPos('Red', windowName)
image[:] = [blue, green, red]
print(blue, green, red)
هنگامی که کاربر کلید Escape را فشار داد، برای بستن پنجرههایی که برنامه باز میشود، از deathAllWindows() استفاده کنید:
cv2.destroyAllWindows()
در نهایت، همه را کنار هم قرار دهید و برای کنترل و مشاهده پالت رنگ خود اجرا کنید.
خروجی برنامه پالت رنگ پایتون
هنگام اجرای برنامه بالا، پنجره ای ظاهر می شود که شامل سه نوار مسیر برای رنگ های آبی، سبز و قرمز است. نوارهای مسیر از محدوده 0 تا 255 حرکت می کنند. هنگامی که مقادیر نوارهای مختلف را تغییر می دهید، باید سایه های مختلف رنگ را در بخش زیر مشاهده کنید.
در این مثال اول، می توانید تنظیم نوار آبی را به صورت 0، سبز را به عنوان 69، و قرمز را به عنوان 255 ببینید. رنگ خروجی حاصل سایه ای از نارنجی/قرمز است. علاوه بر این، پنجره ترمینال مقادیر رنگ را به صورت 0 69 255 نمایش می دهد.
به طور مشابه، وقتی نوار آبی را 130، سبز را 0، و قرمز را 75 قرار دهید، یک رنگ نیلی به دست خواهید آورد.
کاربردهای مختلف OpenCV
OpenCV عملکردهای ارزشمندی را برای کارهایی مانند پردازش تصویر، تشخیص اشیا، تشخیص چهره و ردیابی ارائه می دهد. با استفاده از OpenCV میتوانید برنامههای بینایی رایانهای را در زمان واقعی تولید کنید که در زمینههایی مانند روباتیک، اتوماسیون صنعتی، تصویربرداری پزشکی و سیستمهای نظارتی مفید خواهد بود.
آینده بینایی کامپیوتر امیدوارکننده است. شما می توانید از بینایی کامپیوتری برای کمک به افراد کم بینا، رشد بهتر در کشاورزی، افزایش ایمنی جاده ها با استفاده از خودروهای خودران و حتی پیمایش در سیارات دیگر مانند مریخ استفاده کنید.