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

كيف يتم تحليل الصوره واظهار نسبة كل لون من الوان rgb

إيمان مجدي سليمان

السؤال

from PIL import Image
from PIL import ImageStat
import cv2
import numpy as np
im = Image.open('C:/Users/titanic/Desktop/photo/50.jpg',cv2.IMREAD_COLOR)
stat = ImageStat.Stat(im)
avg = stat.mean 
total = sum(avg)  
red_percentage = avg[0]/total * 100   
green_percentage = avg[1]/total * 100 
blue_percentage = avg[2]/total * 100
print("Red: %f%%, Green: %f%%, Blue: %f%%" % (red_percentage, green_percentage, blue_percentage))
 

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

Recommended Posts

  • 0

Traceback (most recent call last):
  File "C:/Users/titanic/loadtest.py", line 20, in <module>
    im = Image.open('C:/Users/titanic/Desktop/photo/50.jpg',cv2.IMREAD_COLOR)
  File "C:\Users\titanic\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PIL\Image.py", line 3205, in open
    raise ValueError(msg)
ValueError: bad mode 1
رسالة الخطأ

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

  • 0

رسالة الخطأ تشير إلى أن وضع الصورة غير معترف به أو غير مدعوم بواسطة مكتبة PIL (Python Imaging Library). في هذه الحالة ، الوضع '1' ليس وضعًا صالحًا لفتح صورة باستخدام الأمر Image.open ().

لحل هذه المشكلة ، يجب عليك تحديد وضع صالح للصورة عند فتحها. على سبيل المثال ، يمكنك استخدام الوضع 'r' لقراءة الملف في وضع البايتات الثنائية binary و 'RGB' لفتح صورة ملونة:

from PIL import Image

im = Image.open('C:/Users/titanic/Desktop/photo/50.jpg').convert('RGB')

في المثال أعلاه ، تم استخدام الأمر convert() لتحويل الصورة إلى الوضع 'RGB' ، وهو وضع الألوان الصالح المدعوم بواسطة مكتبة PIL.

وبالنسبة للكود الخاص بك، 

الخطأ في الكود هو أنه يتم استخدام cv2.IMREAD_COLOR مع Image.open من مكتبة PIL ، والتي لا يدعمها. يمكن حل هذه المشكلة عن طريق تحميل الصورة مع مكتبة PIL فقط عن طريق تعيين مسار الصورة كمعامل لـ Image.open. هنا هو الكود الصحيح:

from PIL import Image
from PIL import ImageStat

im = Image.open('C:/Users/titanic/Desktop/photo/50.jpg')
stat = ImageStat.Stat(im)
avg = stat.mean()
total = sum(avg)  
red_percentage = avg[0]/total * 100   
green_percentage = avg[1]/total * 100 
blue_percentage = avg[2]/total * 100
print("Red: %f%%, Green: %f%%, Blue: %f%%" % (red_percentage, green_percentage, blue_percentage))

بالإضافة إلى ذلك ،  الكود يعاني من مشكلة في استخدام avg، لأنه لم يتم استدعاء الدالة. يمكن حل هذه المشكلة بإضافة "()" بعد stat.mean، كما تلاحظين في الكود.

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

  • 0
بتاريخ 6 ساعة قال إيمان مجدي سليمان:

كيف يمكن تعديل الكود لإستخدام صوره من pc وليس من مكتبة PIL

يمكنك إضافة مسار الصورة على على حاسوبك داخل القوسين في الكود السابق، وللحصول على مسار الصورة أو أي ملف يمكنك الضغط بزر الفأرة الأيمن على الصورة أو الملف ثم إختيار copy as path.

im = Image.open('C:/Users/titanic/Desktop/photo/50.jpg')

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...