Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как сгенерировать изображение в Python?

#python


Я могу загрузить изображение и вывести его на экран следующим образом:    

import cv2
img = cv2.imread("1.jpg")
cv2.imshow("Original", img)


К примеру, чтобы получить белое изображение, я могу загрузить любое, нарисовать поверх
него белый прямоугольник и вывести на экран.

Однако что делать, если я хочу получить белое изображение без предварительной загрузки?
Как заменить операцию загрузки операцией генерации объекта-изображения?
    


Ответы

Ответ 1



Код ниже полностью взят из документации: import numpy as np import cv2 # Create a black image img = np.zeros((512,512,3), np.uint8) # Draw a diagonal blue line with thickness of 5 px cv2.line(img,(0,0),(511,511),(255,0,0),5) cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) cv2.circle(img,(447,63), 63, (0,0,255), -1) cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1) pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255)) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA) cv2.imshow("Image", img) cv2.waitKey(10000) Свеже-сделанный скриншот:

Ответ 2



Использовать Computer Vision Library для генерации изображений - это... странно. Используйте лучше Pillow from PIL import Image img = Image.new('RGB', (250, 250), (255, 255, 255)) img.show()

Ответ 3



Тип возвращаемый cv2.imread('1.jpg') это numpy.ndarray. Чтобы создать аналогичную 300x400 белую картинку и показать её: #!/usr/bin/env python import numpy as np import cv2 img = np.full((300, 400, 3), 255, dtype=np.uint8) # create cv2.imshow('300x400 white', img) # show cv2.waitKey(0) cv2.destroyAllWindows() Здесь numpy.full() просто создаёт массив заданной формы (3D: 300 400 3) и типа (uint8) и заполняет его переданным (255) значением: >>> np.full((3, 4), 5, dtype=int) array([[5, 5, 5, 5], [5, 5, 5, 5], [5, 5, 5, 5]])

Комментариев нет:

Отправить комментарий