#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]])
Комментариев нет:
Отправить комментарий