Стабилизация изображения в списке двумерных массивов, представляющих изображения в градациях серого с использованием OpenCV в Python - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь реализовать некоторую коррекцию дрожания / движения данных (изображения с интенсивностью серого, хранящиеся в формате hdf5) с помощью пакета OpenCV. Обычно я считываю данные в виде списка двумерных массивов (используя imshow для выполнения цветовых графиков).

Стандартный способ чтения в кадрах из видеофайла с использованием cap = cv2.VideoCapture('video.mp4'), похоже, не принимает мой список 2D numpy массивов, которые выглядят примерно так:

[[243.25 228.5  238.75 ... 277.75 302.5  292.25]
 [255.   256.5  234.75 ... 295.25 289.25 272.5 ]
 [252.5  238.5  231.5  ... 294.25 279.75 285.  ]
 ...
 [253.   248.75 245.25 ... 334.5  282.   335.  ]
 [268.75 253.25 280.75 ... 329.75 338.5  329.25]
 [261.   252.75 254.75 ... 314.25 338.25 315.75]]

Is Есть ли способ сделать это без необходимости сохранять файлы в виде изображений, а затем видео, а затем читать их обратно через cv2?

Я хотел бы использовать goodFeaturesToTrack (), calcOpticalFlowPyrLK () и оценкаRigidTransform () функции из cv2, чтобы убедиться, что я сравниваю одни и те же точки в пространстве для каждого кадра в серии.

1 Ответ

1 голос
/ 10 февраля 2020

Вам просто нужно создать cv Mat и установить для него данные:

img = numpy.zeros([5,5,3])
img[:,:,0] = numpy.ones([5,5])*64/255.0
img[:,:,1] = numpy.ones([5,5])*128/255.0
img[:,:,2] = numpy.ones([5,5])*192/255.0

cv2.imwrite('color_img.jpg', img)
cv2.imshow("image", img)
cv2.waitKey()
...