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

OpenCV تعطي لوناً خاطئاً للصور الملونة عند عرضها ياستخدام  Matplotlib

Ali Ismael

السؤال

عندما أحاول عرض الصورة باستخدام  بعد أن أكون قد قمت بقراءتها باستخدام التابع 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)

الخرج:
index.png.39917c88c4f1446ef2fac903d432cb6e.png
علما أن الصورة الأصلية تبدو هكذا:
61699b5904e50_test5openeye.jpg.fcaa0728d88a3d8873549282ce1d874f.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

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)

الخرج:
index.png.77fd40adb08b1a3746726deb334d1b79.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

الفرق فهو ترتيب الألوان الذي تقرأه matplot ، فهي تقرأ BGR في حين أن معظم الصور RGB، لذا ببساطة شديدة كل ما علينا هو تغيير ترتيب الألون كالتالي:
 

plt.imshow(lena[:,:,::-1]) # RGB-> BGR

وتستطيع كتابتها بطريقة مختلفة كالتالي:

plt.imshow(lena[...,::-1])

 وستظهر بالشكل الصحيح هكذا:

index.png.77fd40adb08b1a3746726deb334d1b79.png.cfa69be04f55b2e8d6d322d0f8fc713b.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...