Amer Abdallah نشر 19 أغسطس 2021 أرسل تقرير نشر 19 أغسطس 2021 لدي صورة RGB. أريد تحويله إلى مصفوفة Numpy. لذلك قمت بكتابة الكود التالي: img = cv.LoadImage("image.tiff") arr = np.asarray(img) لكن هذا الكود يقوم بصنع مصفوفة بلا شكل shape. وإعتقد أنه كائن من نوع iplimage. كيف يمكنني تحويل هذه الصورة إلى مصفوفة Numpy لكي أقوم بإجراء بعض العمليات عليها؟ 2 اقتباس
0 عبدالباسط ابراهيم نشر 19 أغسطس 2021 أرسل تقرير نشر 19 أغسطس 2021 (معدل) يمكنك استخدام ال OpenCV الأحدث كالتالي import cv2 im = cv2.imread("abc.tiff",mode='RGB') print type(im) والنتيجة تكون كالتالي <type 'numpy.ndarray'> كما يمكنك أيضاً استخدام المكتبة PIL (Python Imaging Library) لاحظ المثال التالي حيث تم تعريف دالتين لحفظ وتحميل الصورة كمصفوفة from PIL import Image import numpy as np def load_image( infilename ) : img = Image.open( infilename ) img.load() data = np.asarray( img, dtype="int32" ) return data def save_image( npdata, outfilename ) : img = Image.fromarray( np.asarray( np.clip(npdata,0,255), dtype="uint8"), "L" ) img.save( outfilename ) تم التعديل في 19 أغسطس 2021 بواسطة عبدالباسط ابراهيم إضافة بعض المعلومات اقتباس
0 Ali Haidar Ahmad نشر 19 أغسطس 2021 أرسل تقرير نشر 19 أغسطس 2021 حسناً هناك عدة طرق، لكن يجب علينا أن نفرق بين قراءة الصورة وتحويلها إلى مصفوفة نمباي، الآن أول طريقة هي استخدام الدالة asarray بعد قراءة المصفوفة باستخدام مكتبة PIL لكن أولاً يجب تثبيتها: pip install Pillow الآن يمكنك استخدام PIL: from PIL import Image import requests #url ٍسأقرأ صورة من عنوان im = Image.open(requests.get(url, stream=True).raw) # طباعة معلومات الصورة print(im.format) print(im.size) print(im.mode) """ JPEG (1920, 1200) RGB """ # الآن تحويلها لمصفوفة نمباي numpydata = np.asarray(im) # <class 'numpy.ndarray'> print(type(numpydata)) # shape: (1200, 1920, 3) print(numpydata.shape) الطريقة الثانية استخدام numpy.array بنفس الطريقة: from PIL import Image import requests #url ٍسأقرأ صورة من عنوان im = Image.open(requests.get(url, stream=True).raw) # طباعة معلومات الصورة print(im.format) print(im.size) print(im.mode) """ JPEG (1920, 1200) RGB """ numpy_Arr = np.array(im) # <class 'numpy.ndarray'> print(type(numpy_Arr)) # shape: (1200, 1920, 3) print(numpy_Arr.shape) # ولاستعادة الصورة لشكلها الأصلي # Image.fromarray Image.fromarray(numpy_Arr) الطريقة الثالثة هي استخدام الدالة img_to_array من keras حيث نقوم في البداية بقراءتها من خلال الدالة load_img من كيراس أيضاً: # pip install keras # pip install tensorflow from keras.preprocessing.image import load_img mg = load_img('image1.png') im.mode # RGB type(mg) # <class 'PIL.PngImagePlugin.PngImageFile'> im.format # PNG im.size # (400, 200) # الآن تحويلها from keras.preprocessing.image import img_to_array numpy_array = img_to_array(img numpy_array.shape # (200, 400, 3) type(numpy_array) # <class 'numpy.ndarray'> numpy_array.dtype # type: float32 # ولاستعادة الصورة من مصفوفة نمباي from keras.preprocessing.image import array_to_img array_to_img(numpy_array) وأيضاً من خلال مكتبة OpenCV لكن أيضاً يجب تحميلها: # pip install opencv-contrib-python import cv2 as cv im = cv.imread('Sample.png') image = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) # لحفظها cv.imwrite('i.png', image) type(img) # <class 'numpy.ndarray'> حيث تقوم بقراءة الصورة كمصفوفة نمباي مباشرةً. وهذا كان كل شيئ. اقتباس
السؤال
Amer Abdallah
لدي صورة RGB. أريد تحويله إلى مصفوفة Numpy. لذلك قمت بكتابة الكود التالي:
لكن هذا الكود يقوم بصنع مصفوفة بلا شكل shape. وإعتقد أنه كائن من نوع iplimage.
كيف يمكنني تحويل هذه الصورة إلى مصفوفة Numpy لكي أقوم بإجراء بعض العمليات عليها؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.