ویژگیهای رابط کاربری در OpenCV
نوار لغزنده به عنوان پالت رنگ
هدف#
- یادگیری اتصال نوار لغزنده (Trackbar) به پنجرههای OpenCV
- با این توابع آشنا خواهید شد: ()cv.getTrackbarPos، ()cv.createTrackbar و غیره.
دموی کد#
در اینجا یک برنامه کاربردی ساده ایجاد خواهیم کرد که رنگ مشخصشده توسط شما را نشان میدهد. شما پنجرهای دارید که رنگ را نمایش میدهد و سه نوار لغزنده برای تعیین هر یک از رنگهای B، G و R. نوار لغزنده را جابجا میکنید و رنگ پنجره متناسب با آن تغییر مییابد. به طور پیشفرض، رنگ اولیه روی مشکی تنظیم میشود.
برای تابع ()cv.createTrackbar، آرگومان اول نام نوار لغزنده، دوم نام پنجرهای است که به آن متصل شده است، آرگومان سوم مقدار پیشفرض، چهارم مقدار بیشینه (حداکثر) و پنجم تابع بازخوانی (Callback) است که با هر بار تغییر مقدار نوار لغزنده اجرا میشود. تابع بازخوانی همیشه یک آرگومان پیشفرض دارد که همان موقعیت جاری نوار لغزنده است. در مورد ما، تابع کاری انجام نمیدهد، بنابراین به سادگی از pass استفاده میکنیم.
کاربرد مهم دیگر نوار لغزنده، استفاده از آن به عنوان دکمه یا کلید قطع و وصل (Switch) است. OpenCV به طور پیشفرض قابلیت دکمه (Button) ندارد؛ بنابراین میتوانید از نوار لغزنده برای به دست آوردن چنین قابلیتی استفاده کنید. در برنامه خود، کلیدی ایجاد کردهایم که در آن برنامه تنها در صورت روشن بودن (ON) کلید کار میکند، در غیر این صورت صفحه همیشه سیاه خواهد بود.
import numpy as np
import cv2 as cv
def nothing(x):
pass
# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
cv.namedWindow('image')
# create trackbars for color change
cv.createTrackbar('R','image',0,255,nothing)
cv.createTrackbar('G','image',0,255,nothing)
cv.createTrackbar('B','image',0,255,nothing)
# create switch for ON/OFF functionality
switch = '0 : OFF \n1 : ON'
cv.createTrackbar(switch, 'image',0,1,nothing)
while(1):
cv.imshow('image',img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
# get current positions of four trackbars
r = cv.getTrackbarPos('R','image')
g = cv.getTrackbarPos('G','image')
b = cv.getTrackbarPos('B','image')
s = cv.getTrackbarPos(switch,'image')
if s == 0:
img[:] = 0
else:
img[:] = [b,g,r]
cv.destroyAllWindows()
تصویر خروجی برنامه به صورت زیر است:

تمرینها#
- یک برنامه Paint با رنگها و شعاع قلمموی قابل تنظیم با استفاده از نوارهای لغزنده ایجاد کنید. برای رسم، به آموزش قبلی در مورد مدیریت ماوس مراجعه فرمایید.