Ali Ismael نشر 23 أكتوبر 2021 أرسل تقرير نشر 23 أكتوبر 2021 أريد إجراء عملية عكس لبيانات الصورة الرمادية، فهل هناك طريقة للقيام بذلك في بايثون؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 23 أكتوبر 2021 أرسل تقرير نشر 23 أكتوبر 2021 يمكنك استخدام الدالة bitwise_not لإيجاد صورة المعكوس (المتمم) للصورة الأصلية، حيث نمرر الصورة للدالة وهي تتكفل بإنتاجها حيث تكون قيمة كل بكسل في الصورة الناتجة هي المتمم إلى 255 لقيمة البكسل الأصلية. فمثلاً لو كانت قيمة البكسل في الصورة الأصلية 100 ستكون قيمته في الصورة الناتجة 155 لأن: 255-100=155 مثال: import cv2 import numpy as np # قراءة الصورة image = cv2.imread('/content/test.jpg') # تحويلها إلى الصيغة الرمادية image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # عكس الصورة inverted = cv2.bitwise_not(image) from google.colab.patches import cv2_imshow cv2_imshow(image) cv2_imshow(inverted) الصورة الأصلية: الصورة الناتجة: كما يمكنك استخدام الدالة np.invert التي تؤدي نفس الغرض: import cv2 import numpy as np image = cv2.imread('/content/test.jpg') # تحويلها إلى الصيغة الرمادية image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # عكس الصورة inverted = np.invert(image) from google.colab.patches import cv2_imshow cv2_imshow(image) cv2_imshow(inverted) 1 اقتباس
1 Ahmed Sharshar نشر 25 أكتوبر 2021 أرسل تقرير نشر 25 أكتوبر 2021 في البداية علينا فهم معنى الصورة الرمادية، هي تتكون من عدد من البيسكل متراوحة من 0 الى 255 بحيث ان 0 هو الأسود و 255 هو الابيض. لذلك لعكس الأبيض مع الأسود كل ما علينا فعله هو طرح ال 255 من قيمة كل بيكسل وبذلك يتحول الأبيض الي مقابله من الأسود ببساطة. قد تستطيع فعل هذا بشكل يدوي عن طريق طرح كل بيكسل ثم رسم الصورة الجديدة هكذا: def inverte(imagem, name): imagem = (255-imagem) cv2.imwrite(name, imagem) def inverte2(imagem, name): for x in np.nditer(imagem, op_flags=['readwrite']): x = abs(x - 255) cv2.imwrite(name, imagem) if __name__ == '__main__': nome = str(sys.argv[1]) image = cv2.imread(nome) gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) inverte(gs_imagem, "invertida.png") inverte2(gs_imagem, "invertida2.png") أو بشكل مختصر بعلامه ~ والتي تعني العكس كالتالي: import cv2 image = cv2.imread("img.png") image = ~image cv2.imwrite("img_inv.png",image) أو باستخدام bitwise_not: imagem = cv2.bitwise_not(imagem) وفي كل الأحوال تظهر كالتالي: الصورة الأصلية بعد التحويل: اقتباس
السؤال
Ali Ismael
أريد إجراء عملية عكس لبيانات الصورة الرمادية، فهل هناك طريقة للقيام بذلك في بايثون؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.