Evg008 0 Report post Posted January 8, 2018 Добрый день! Есть обычное трафик видео. Задача состоит в том чтобы на выходе получить сжатое видео в котором объекты накладываются большим количеством на статический задний фон. Чтобы накладывать объекты большим количеством надо каждый объект (его координаты и значения пикселей) записывать в отдельный массив, либо создавать маски numpy для каждого, и затем уже накладывать. Пытаюсь через контуры, фильтрую изображение, получаю белые блобы, нахожу контуры, но не понимаю как данные каждого контура записывать в отельные массивы. Вот кусочек кода начиная после нахождения контуров: # Находим координаты контура mask = np.zeros(thresh.shape,np.uint8) cont2 = cv2.drawContours(mask,contours,0,255,-1) pixelpoints = np.transpose(np.nonzero(mask)) # Находим значения пикселей for k in range(0,(len(pixelpoints))): a = (frame[pixelpoints[k][0]][pixelpoints[k][1]]) pix_list.append(a) Share this post Link to post Share on other sites
Smorodov 578 Report post Posted January 8, 2018 Если контурами, то можно так: номер кадра, количество контуров в кадре, кол-во точек в контуре №1, список точке контура №1, кол-во точек в контуре №2, список точке контура №2, .... Share this post Link to post Share on other sites
Evg008 0 Report post Posted January 8, 2018 немного не понимаю как это должно выглядеть, то есть я создаю лист, в который для каждого кадра записываю номер контура, его координаты и значения, так? что-то вроде: list [ frame1 [ cont1 [ inds [ [ 0 10 ] , [ 0 11 ],..] pix_vals [ [ 11 22 33 ], [ 22 33 44 ],...] ], cont2 [...] ], frame2 [ ... ] ... ] то есть, если один контур присутствует скажем на 20 кадрах, то он будет с каждым кадром считаться как новый? а наложить несколько контуров за кадр получится потом из этих данных? поясните пожалуйста Share this post Link to post Share on other sites
Smorodov 578 Report post Posted January 8, 2018 Ну, что то типа того, но размер файла не уверен что будет меньше, чем стандартный mpeg. Можно что типа RLE сжатия заюзать, в начале каждой строчки с пикселями, писать их количество в текущем блобе для этой строки, и дальше только значения пикселей. Share this post Link to post Share on other sites