• 0

تحويل صورة RGB إلى أبيض وأسود في OpenCV | بايثون

لدي مجموعة من الصور وأريد تحويل بعضها إلى الأبيض والأسود، كيف نقوم بذلك؟ مثلاً الصورة التالية:
imageproxy.php?img=&key=e4ac65570db3469dOrginal.thumb.png.67e15dd1a5ca4cef56d09c4c4e098c22.png
 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

لتحويل الصورة الملونة RGB إلى صورة أبيض وأسود، نقوم أولاً بتحويلها إلى صورة رمادية إما من خلال قراءتها مباشرةً كصورة رمادية في التابع imread أو من خلال استخدام كود التحويل COLOR_BGR2GRAY في التابع cvtColor، ثم تعتيبها بإحدى طرق التعتيب في OpenCV وهما التعتيب البسيط والتعتيب المتكيف (روابطهما في الأسفل):

import cv2
import numpy as np
# قراءة الصورة
img = cv2.imread(r'/content/me.jpg') 
# Gray  تحويل الصورة إلى 
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # أو cv2.imread(r'/content/me.jpg',0) 
# تحويل الصورة إلى أبيض وأسود عن طريق التعتيب
_,Black_white_img=cv2.threshold(gray_img,127,255,cv2.THRESH_BINARY)
# عرض الصورة الناتجة 
cv2.imshow('res',Black_white_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

الخرج:
index.thumb.png.8ac01e989020a9c282528a21d06f7a79.png

 

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

في البداية عليك قراءة الصورة بشكل رمادي عوضا عن قراءتها بالألوان كالتالي:

import cv2
im_gray = cv2.imread('grayscale_image.png', cv2.IMREAD_GRAYSCALE)

بعد ذلك تقوم بعمل التعتيب، وهو أن تضع حدا بحيث يكون كل البيكسل التي أقل من هذا الحد =0 أي سوداء بينما كل ما هو أكبر منها = 1 أي أبيض كالتالي:

thresh = 127
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)

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

(thresh, im_bw) = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

في النهاية عليك حفظ الصورة وستظهر بالشكل الذي تريد.

في المثال الخاص بك يمكنك تجربة هذا الكود:

import cv2
  
originalImage = cv2.imread('C:/Users/ahmed/Desktop/Test.png')
grayImage = cv2.cvtColor(originalImage, cv2.COLOR_BGR2GRAY)
  
(thresh, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY)
 
cv2.imshow('Black white image', blackAndWhiteImage)
cv2.imshow('Original image',originalImage)
cv2.imshow('Gray image', grayImage)
  
cv2.waitKey(0)
cv2.destroyAllWindows()

والذي تكون نتيجته أظهار الصورة الرمادية هكذا:Capture.thumb.PNG.d5dfe2a271c98a0d15d5591bd20b2336.PNG

والصورة الأبيض والأسود هكذا:

2.thumb.PNG.52ff760f6847347d6f23ac0f481d16d1.PNG

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن