اذهب إلى المحتوى
  • 0

الدالة cvWaitKey في OpenCV| بايثون

Ali Ismael

السؤال

Recommended Posts

  • 1

تقوم بإيقاف تنفيذ الكود لمدة زمنية معين تقدر بالميلي ثانية وتوضع بين قوسين بالشكل(). أي في حال قمت بكتابة:

import cv2 as cv
I=cv.imread("rose.jpg")
cv.imshow(“imag”,I)
cv2.waitKey(1000)
# statment1
# statment2
.
.
.
# statmentn

فهذا يعني أن الصورة سيتم عرضها في نافذة منبثقة وسيتوقف تنفيذ باقي تعليمات الكود لمدة 1000 ميلي ثانية، وبعد انقضاء المدة يستكمل بايثون في تنفيذ باقي التعليمات (لكن الصورة تبقى معروضة في النافذة المنبثقة ولاتحاول إغلاقها لأنك إن قمت بذلك سوف ينهار البرنامج) ولجعلها تختفي لابد من إضافة التعليمة cv2.destroyAllWindows بعدها مباشرةً. أما في حال كانت القيمة الممررة أصغر أو تساوي 0 عندها سوف يتم عرض الصورة وبعد عرضها سوف يتم إيقاف تنفيذ الكود إلى ما لانهاية، ويتم استكمال تنفيذ الكود عند قيامك بالضغط على زر معين (وأيضاً هنا ستبقى الصورة في النافذة مالم تكن التعليمة التالية هي destroyAllWindows ). كما يجب أن تعلم أنه إذا لم تقم باستخدام التعليمة ()cv2.waitKey لن يتم إظهار الصورة.
وفي حالة أردت استخدامه مع الفيديو فأنصحك بالاطلاع على السؤال التالي:

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

تستخدم الدالة cv2.waitKey كأنها مؤقت ، بحيث تقوم بادخال الوقت الذي تريد أن تنتظره الدالة (بالمللي ثانية) بحيث يقوم البرنامج خلال تلك المدة بعمله على الصور او الفيديوهات ثم بعد انتهاء الوقت يقوم بعمل شئ أخر، الكود التالي مثال على هذا:

import cv2
import time

img = cv2.imread("flowers.jpg")
cv2.imshow("Flowers",img)
initial_time = time.time()
cv2.waitKey(3000)
final_time = time.time()
print("Window is closed after",(final_time-initial_time))

ويكون الخرج تلك الصورة مع الوقت الذي أخذته الصوره وهي 3 ثوان:

flowers.jpg.5d4fb66f06dae450fbbc7bf55daf60c3.jpg

Window is closed after 3.0099525451660156

يمكن أيضا استخدامها بحيث لا تنتظر وقتا محددا وانما حدث، كالضغط على زر، المثال التالي يوضح إستخدامها بحيث تظل الصورة معروضة حتى يقوم المستخدم بالضغط على أي زر فتختفي:

#استدعاء الدالة
import cv2 as cv
#قراءة الصورة
imageread = cv.imread('C:/Users/admin/Desktop/images/test.jpg')
#انتظار الحدث
cv.imshow('Image', imageread)
cv.waitKey(0)
cv.destroyAllWindows()

 

تم التعديل في بواسطة Ahmed Sharshar
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...