python opencv warpAffine, примененный к стеку изображений, терпит неудачу - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть стопка из 500 изображений, каждое с размерами (466, 1012). Все это хранится в массиве numpy, который поэтому имеет размеры (466, 1012, 500).

Я бы хотел повернуть каждое изображение на 5 градусов, используя warpAffine в opencv. Сначала я использовал для l oop, чтобы применить функцию к каждому из 500 изображений по одному, и это работало нормально. Но потом я обнаружил, что он работает в 10 раз быстрее, просто применяя warpAffine ко всему массиву. Т.е. я сделал что-то вроде этого:

import cv2

angle = 5 # I want to rotate each image by 5 degrees
height, width = im.shape[:2] # im has shape (466, 1012, 500)
image_center = (width/2, height/2) # rotate about the image centre

rotationMat = cv2.getRotationMatrix2D(image_center, angle, 1.) 
rotatedMat = cv2.warpAffine(im, rotationMat,(466, 1012))

Затем я попытался сделать то же самое в стеке из 600 изображений, и это не сработало. Он выдал ошибку: ошибка: OpenCV (4.2.0) .. \ modules \ imgproc \ src \ imgwarp. cpp: 2594: ошибка: (-215: подтверждение не выполнено) sr c .cols> 0 && sr c .rows> 0 в функции 'cv :: warpAffine'

Фактически она перестает работать при размере стека 512.

Я мог бы go вернуться к использованию для l oop но у меня есть огромное количество данных для обработки, поэтому 10-кратная экономия времени была бы очень полезна. Есть ли способ заставить его работать? Также мне просто интересно, почему это не работает ... Я не могу понять это!

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...