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

السؤال

نشر

لدي قائمة تحتوي على مجموعة من مسارات لصور على حاسوبي، كل الصور لها نفس الحجم وهي كبيرة (1920 × 1080) وأريد إقتصاص جزء من كل صورة بحجم (1280 × 720) وحفظه في ملف منفصل، حاولت البحث عن دالة تقوم بإقتصاص الصور في مكتبة OpenCV ولكن لم أجد شيء مفيد

ما هي الطريقة المستعملة في مكتبة OpenCV لإقتصاص جزء من صورة بحجم معين؟

Recommended Posts

  • 1
نشر

لا توجد في مكتبة  OpenCv طريقة اقتصاص وغالبا يقترح المبرمجون طريقة numpy slicing الآتية:

crop_img = img[y:y+h, x:x+w]

مع تعيينy و x في قيمة الصفر للقص من وسط الصورة.

نظرا لمشكلة أحجام الصور عندك يمكنك الحفاظ على جميع زواياها مع تغيير حجمها بحيث تصبح أصغر دون الاقتصاص منها.  تتوفر OpenCv على وظيفة resize لتغيير الحجم و بالتالي يمكنك فعل ذلك عبر الكود:

import cv2

#قراء الصورة عبر مسارها 
filename = "./test2jpg"
oriimage = cv2.imread(filename)
print(oriimage.shape)

newx,newy = 1280,720 #الابعاد الجديدة
dim = (newx, newy) 

newimage = cv2.resize(oriimage,dim,interpolation = cv2.INTER_AREA) # تعيين الصورة حسب الابعاد الجديدة 

print(newimage.shape)
cv2.imwrite("new image.jpg", newimage) #حفظ الصورة

cv2.imshow("original image",oriimage)# عرض الصورة الاصلية
cv2.imshow("resize image",newimage)#عرض الصورة الجديدة

cv2.waitKey(0)

الأحجام تصبح:

(1080, 1920, 3) # حجم الصورة الأصلية
(720, 1280, 3)  # حجم الصورة الجديدة

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...