Ali Ismael نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 عندما أحاول عرض الصورة باستخدام بعد أن أكون قد قمت بقراءتها باستخدام التابع cv.imread تظهر لي الصورة بألوان غير صحيحة، لماذا؟ وما الحل؟ from matplotlib import pyplot as plt import cv2 img = cv2.imread(r'C:\Users\Windows.10\Desktop\All\test5 openeye.jpg') plt.title("Face") plt.imshow(img) الخرج: علما أن الصورة الأصلية تبدو هكذا: 1 اقتباس
1 Ali Haidar Ahmad نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 OpenCV تقوم بقراءة الصور بالصيغة BGR أما ماتبلوتليب فتتعامل مع الصور بالصيغة RGB وبالتالي ترتبيب الألوان مختلف أي أنت تقرأ الصورة في التابع imread على أنها مصفوفة من 3 قنوات الأولى للأزرق والثانية للأخضر والثالث للأحمر، وعندما تقوم باستخدام ماتبلوتليب لعرضها فإنها تقرأ الأزرق على أنه أحمر والأخضر على أنه أخضر و الأحمر على أنه أزرق مما ينتج لنا هذه المشكلة. وبالتالي لحل المشكلة فكل ماعليك فعله هو استخدام التابع cv2.cvtColor مع الخاصية cv2.COLOR_BGR2RGB وبالتالي تحويل نظام الصورة إلى RGB: from matplotlib import pyplot as plt import cv2 img = cv2.imread(r'C:\Users\Windows.10\Desktop\All\test5 openeye.jpg') img= cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.title("Face") plt.imshow(img) الخرج: 1 اقتباس
1 Ahmed Sharshar نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 الفرق فهو ترتيب الألوان الذي تقرأه matplot ، فهي تقرأ BGR في حين أن معظم الصور RGB، لذا ببساطة شديدة كل ما علينا هو تغيير ترتيب الألون كالتالي: plt.imshow(lena[:,:,::-1]) # RGB-> BGR وتستطيع كتابتها بطريقة مختلفة كالتالي: plt.imshow(lena[...,::-1]) وستظهر بالشكل الصحيح هكذا: اقتباس
السؤال
Ali Ismael
عندما أحاول عرض الصورة باستخدام بعد أن أكون قد قمت بقراءتها باستخدام التابع cv.imread تظهر لي الصورة بألوان غير صحيحة، لماذا؟ وما الحل؟
الخرج:
علما أن الصورة الأصلية تبدو هكذا:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.