اول از این که کار با تصویر در OpenCV رو شروع کنیم، باید بدونیم که خود تصویر ، چه نوع داده ای هستش. کامپیوتر یک تصویر رو به چه صورت میبینه؟ برای رسیدن به این جواب، زیاد فلسفی حرف نمیزنیم. یه پوشه توی یه درایو ایجاد کنید و یه تصویر به این پوشه منتقل کنید .اسم فایل رو میزاریم avalin.jpg. خوب حالا مسیر پوشه رو توی cmd باز کنین :
حالا توی CMD تایپ کنید python و Enter رو بزنید. اگه خوش شانس باشین و مشکلی پیش نیاد،متنی مثل تصویر زیر رو میبینین :
حالا باید کتابخانه OpenCV رو فراخوانی کنیم . برای این کار هم توی ادامه کار تایپ میکنید import cv2. اگه طبق آموزش موجود در پست “نصب و راه اندازی OpenCV برای Python در windows 10” عمل کرده باشید، با خطایی روبرو نمیشید.
حالا باید فایل رو از ورودی بخونیم. برای این منظور از تابع imread استفاده میکنید :
img = cv2.imread(‘D:/P30Script/opencv/02/avalin.jpg’)
توجه داشته باشید که باید قبل از imread از cv2 استفاده کنیم تا مشخص بشه صاحب این تابع کیه،الکی نیست که هرکی بیاد از ورودی یچی برا خودش بخونه. نکته بعد این که متاسفانه ما توی ویندوز داریم کار میکنیم پس باید مسیر کامل فایل رو بدیم. حالا با استفاده از type نوع فایل تصویر رو مشخص میکنیم :
خوب به سلامتی مشخص شد که فایل تصویر ما در اصل یه آرایه هستش که ادای تصویری در میاره! خوب ثابت کردیم که نیاز به numpy داریم :|.
چگونه در OpenCV+Python تصویر را بخوانیم و ذخیره کنیم؟
حالا متوجه نوع فایل شدیم دیگه وقتشه که کار با اون رو شروع کنیم. خوب برای این کار یک فایل به نام avalin-opcv.py بسازین و بعد به وسیله محیط برنامه نویسی مورد علاقه خودتون بازش کنین. ما که از VSCode استفاده میکنیم. فایل رو ذخیره کنید. فایل همونجایی قرار داره که تصویرمونو آپلود کرده بودیم : avalin.jpg . حالا قطعه کد زیر روی توی فایل پایتونتون بنویسین و بعد اجرا بگیرینش:
import numpy as np
import cv2
img0 = cv2.imread('D:/P30Script/opencv/02/avalin.jpg',0)
img1 = cv2.imread('D:/P30Script/opencv/02/avalin.jpg',1)
img2 = cv2.imread('D:/P30Script/opencv/02/avalin.jpg',-1)
cv2.imshow('image0',img0)
cv2.imshow('image1',img1)
cv2.imshow('image-1',img2)
cv2.waitKey(0)
دو خط اول که میشه فراخوانی کتابخانه های numpy و OpenCV. توی خط سوم فایل رو از منبع میخونیم اما به یه تفاوت از کد قبلی داریم اون هم خوندن تصویر به صورت سیاه و سفید هستش. تابع imread سه حالت خوندن تصویر داره:
- cv2.IMREAD_COLOR : Loads a color image. Any transparency of image will be neglected. It is the default flag.
- cv2.IMREAD_GRAYSCALE : Loads image in grayscale mode
- cv2.IMREAD_UNCHANGED : Loads image as such including alpha channel
خاکستری، رنگی و بدون تغییر که این سه حالت با قرار دادن اعداد 0، 1 و -1 به ترتیب قابل استفاده هستند . خروجی کد بالا، سه تصویر خواهد بود .
چگونه با opencv دوربین یا وب کم را فراخوانی کنیم؟
کد زیر را در یک فایل python قرار داده و ران کنید :
import cv2
cap=cv2.VideoCapture(0)
if not cap.isOpened():
raise IOError("webcam baz nemishe")
while True:
rat,frame=cap.read()
frame=cv2.resize(frame,None,fx=1.0,fy=1.0,interpolation=cv2.INTER_AREA)
#def resize(src, dsize, dst, fx, fy, interpolation)
cv2.imshow('input',frame)
c=cv2.waitKey(1)
print(c)
if c==27:
break
cap.release()
cap.destroyAllWindows()
نتیجه کد :
این قسمت واسه اونایی بود که عجله دارن یهو میخوان بزنن آخر سریال رو ببینند. در ادامه بیشتر با تصاویر کار خواهیم کرد، با ما همراه باشید ;).
سلام ممنون میشم که سوال من را جواب دهید.چه طور میشه ی فایل ۱۰۰۰ تصویری را در opencv لود کرد و بعد روش پردازش انجام داد.