Как нарисовать полупрозрачный прямоугольник в Python? - PullRequest
0 голосов
/ 11 апреля 2020

Я хотел бы добиться чего-то похожего на это: enter image description here

У меня есть изображение на красном фоне, но я не уверен, как нарисовать полупрозрачный прямоугольник, например, на изображение выше, чтобы поместить текст для того, чтобы он выскочил больше. Я почти уверен, что это может быть достигнуто с помощью OpenCV, но я довольно плохо знаком с Python, и это кажется очень запутанным. (Я не могу сделать это правильно, и это начинает меня раздражать). Вот мое текущее изображение (игнорируйте белый контур):

enter image description here

1 Ответ

1 голос
/ 11 апреля 2020

Вот один из способов достижения тех же результатов в Python / OpenCV.

  • Считывание ввода
  • Обрезка нужной области для затемнения
  • Создание того же размер черного изображения
  • Смешайте два изображения (обрезка 75% и черный 25%)
  • Нарисуйте текст на смешанном изображении
  • Скопируйте текстовое изображение обратно в то же место в вход
  • Сохранить результаты

Вход:

enter image description here

import cv2
import numpy as np

# load image
img = cv2.imread("chimichanga.jpg")

# define undercolor region in the input image
x,y,w,h = 66,688,998,382

# define text coordinates in the input image
xx,yy = 250,800

# compute text coordinates in undercolor region
xu = xx - x
yu = yy - y

# crop undercolor region of input
sub = img[y:y+h, x:x+w]

# create black image same size
black = np.zeros_like(sub)

# blend the two
blend = cv2.addWeighted(sub, 0.75, black, 0.25, 0)

# draw text on blended image
text = cv2.putText(blend, "CHIMICHANGA", (xu,yu), cv2.FONT_HERSHEY_SIMPLEX, 2, (255,255,255), cv2.LINE_8, bottomLeftOrigin=False )

# copy text filled region onto input
result = img.copy()
result[y:y+h, x:x+w] = text

# write result to disk
cv2.imwrite("chimichanga_result.jpg", result)

# display results
cv2.imshow("BLEND", blend)
cv2.imshow("TEXT", text)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()


Результат:

enter image description here

...