الدرس الاول : التعامل مع الصور

الدرس الاول : التعامل مع الصور .

قراءة صورة :

باستخدام التابع cv2.imread()  ولكن يجب اعطاء المسار الكامل للصورة او وضعها بمجلد العمل ويكتب الاسم مع اللاحقة ك str .
المتغير الثاني وهو مؤشر flag  يحدد كيفية قراءة الصورة , ويأخذ ثلاث قيم :
·         cv2.IMREAD_COLOR
·         cv2.IMREAD_GRAYSCALE
·         cv2.IMREAD_UNCHANGED
وتأثيرهم بالترتيب:
·         اقرأ الصورة بالالوان الكاملة (بدون شفافية )
·         اقرأ الصورة بالرمادي (مستوي واحد)
·         اقرأ الصور بالالوان الكاملة (مع الشفافية)
ويمكن تمرير 1 ,0.-1 كبديل عن الاعلام حرفياً بالترتيب.
كما المثال التالي :
import numpy as np
import cv2
# load color image in gray scale
pic = cv2.imread('image1.png',0)

عرض الصورة:

باستخدام التابع : cv2.imshow() نظهر الصورة بالنافذة , واتوماتيكياً تتلائم الصورة مع النافذة , واول متغير هو اسم النافذة , والمتغير الثاني هو الصورة , ويمكنك انشاء اي عدد من النوافذ ولكن كل منها له اسم فريد ,.
cv2.imshow('image',pic)
cv2.waitKey()
cv2.destroyAllWindows()
والتالي ويوضح النتيجة:

cv2.waitKey()  وهو تابع ينتظر لمدة تساوي متغيره الاول بواحدة ميلي ثانية , حتى يتابع التنفيذ ,او تاتيه ضغطة زر , يردها بمتغير الخرج له , (بصيغة ascii ) واذا مرننا له صفراً او عدداً سالباً فسوف يتوقف ينتظر ابداً لاي ضغطة زر ..
cv2.destroyAllWindows() ببساطة اغلق كل النوافذ الموجودة , اما التابع  cv2.destroyWindow() فيجب تمرير اسم نافذة محدد لها.
--------------------------
ملاحظة :
اذا اردنا تحجيم اظهار الصورة , لمايناسب الشاشة فعلينا استخدام التابع cv2.namedWindow()  نمرر له اسم النافذة المرغوب مع علم له خيارين:cv2.WINDOW_NORMAL   او cv2.WINDOW_AUTOSIZE .
cv2.namedWindow('image',cv2.WINODOW_NORMAL)
cv2.imshow('image',pic)
cv2.waitKey(0)
cv2.destroyAllWindows()

كتابة صورة :

استخدم التابع cv2.imwrite() لحفظ الصورة .
اول متغير لها هو اسم الملف , والثاني هو رمز الصورة ( متغيرها)
cv2.imwritr('picgray.png',pic)

الملخص:

البرنامج التالي يحمل الصورة  ويظهرها ويحفظها بالمستوى الرمادي اذا ضغطت 's' او لا يحفظها ويغلق بضغط ESC.
import numpy as np
import cv2
img = cv2.imread('pic5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img)
               cv2.destroyAllWindows()

باستخدام Matplotlib:

تتيح هذه المكتبة امكانيات افضل لاظهار الصور وحفظها كما يلي:
import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('pic.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
والنتيجة تكون كما التالي:


هناك العديد من الخيارات المتوفرة في Matplotlib  ويمكن العودة للمراجع الخاصة بها , للحصول على تعليمات اكثر ,
---------------------------------------
ملاحظة :
عند تحميل الصور عبر opencv  نحصل على صور بصيغة BGR  ولكن عند اظهارها ب Matplotlib  يتم اعتبارها RGB  (اي يكون الاحمر ازرق والعكس) لذلك يجب مراعاة هذا الوضع والانتباه لتبدبل الالوان قبل اظهرها عبر ال Matplotlib  ...
-------------------------------------

انتهى الدرس الاول.


ملاحظات , اسئلة : يرجى ادراجها بالتعليقات.

الدرس الثاني ...

ليست هناك تعليقات:

إرسال تعليق