Я использую openCV для создания видео с определенными шаблонами.Один из моих шаблонов размером 35x35 выглядит следующим образом
, а соответствующие числовые записи в базовой матрице выглядят следующим образом
Моя идея - наложить узор на белый фон размером 260x346 и создать видео, в котором узор перемещается горизонтально.Первый кадр будет выглядеть примерно так:
Я создаю видео с помощью openCV со следующей функцией
def move_square(pattern, background):
'''
The function creates a video of the pattern moving horizontally over a given background
Parameters:
-----------
pattern: <np.array, 35x35>
The pattern supposed to move over the background
background: <np.array, 260x346>
A white background of the given size
'''
fourcc = VideoWriter_fourcc(*'MP42')
video = VideoWriter('./videos/moving_pattern_for_sampling_exp.avi', fourcc, 30, (346, 260))
background[112:147, 0:35] = pattern
frame = background
for _ in range(0, 346-30):
video.write(cv2.cvtColor(frame,cv2.COLOR_GRAY2RGB))
shifted_frame = np.roll(frame, 1, axis=1)
frame = shifted_frame
video.write(frame)
cv2.destroyAllWindows()
video.release()
Однако еслиЯ прочитал кадры из вышеприведенного видео, используя следующий фрагмент
vidcap = cv2.VideoCapture('videos/moving_pattern_for_sampling_exp.avi')
success,image = vidcap.read()
count = 0
while success:
cv2.imwrite("test/frame%d.jpg" % count, image) # save frame as JPEG file
success,image = vidcap.read()
print('Read a new frame: ', success)
count += 1
im = cv2.imread('test/frame1.jpg')
img = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
np.savetxt("image.csv", np.asarray(img),fmt='%i', delimiter=",")
, и теперь просматриваю кадры, значения шаблона в кадре отличаются от того, чем они были изначально.
Также местоположения, которые должны были быть белыми со значением 255, теперь были установлены на 252 повсюду.В чем может быть причина этих расхождений?