SHORTOpenCV putText в Python - Ошибка после манипуляции массива
Я хочу написать текст в изображение. Я, однако, не в состоянии понять следующее поведение:
import numpy as np
import cv2
# create an image
img = np.ones((512,512,3), dtype = np.uint8)
# create an image container (I have to do this as I cycle through many folder and collect images)
img_container = np.zeros((512,512,3,5), dtype = np.uint8)
# send img to the container array
img_container[:,:,:,0] = img[:,:,:]
# I can add text to the original image
cv2.putText(img, 'Hello World', (10,500), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255),2)
cv2.imshow('img', img)
# When I retrieve the img again..
img_from_container = img_container[:,:,:,0]
# ..I am unable to do so however
cv2.putText(img_from_container, 'Hello World', (10,500), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255),2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: Layout of the output array img is incompatible with cv::Mat (step[ndims-1] != elemsize or step[1] != elemsize*nchannels)
LONG
Я не понимаю разницу между этими двумя переменными (IMG и img_from_container), поскольку они оба dtype = np.uint8
, они оба имеют такая же форма при тестировании img.shape
, и когда я сравниваю их с img==img_from_container
, я получаю все это.
Очевидно, что я чего-то не хватает. Я был бы очень благодарен за любые намеки и предложения о том, где еще эти две переменные отличаются!
Это ответ, который я искал. Спасибо, также за четкое объяснение! – dtadres