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

السؤال

Recommended Posts

  • 1
نشر

يمكنك استخدام الدالة 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)

الصورة الأصلية:
index.png.1e57b6d21b8c3511374c764c97a50cad.png
الصورة الناتجة:
index.png.127ec3996995359e8d549a8f1e4c4f76.png
كما يمكنك استخدام الدالة 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
نشر

في البداية علينا فهم معنى الصورة الرمادية، هي تتكون من عدد من البيسكل متراوحة من 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)

وفي كل الأحوال تظهر كالتالي:

الصورة الأصلية

or.PNG.cff8a2cc32fa44e682536ba9fb12c5c8.PNG

بعد التحويل:

cut.PNG.8365d03ce64782b782ad674388e06be3.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...