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

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

Ali Ismael

السؤال

Recommended Posts

  • 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

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

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

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...