Error executing this opencv code and image comparison skimage

0

I'm developing a program that analyzes two videos and removes similar frames using opencv and saves it again, but I've tried a lot of things and the final part that analyzes the similarity and saves, but always a problem and I do not know where I'm going wrong.

import cv2
from skimage.measure import _structural_similarity as ssim
from time import sleep



caminho_video_1 = 'C:/Users\lourd\Videos/Alan Walker   The Spectre[1].mp4'
caminho_video_2 = 'C:/Users\lourd\Videos/Bruno Mars   The Lazy Song [OFFICIAL VIDEO].wmv'

ca1 = cv2.VideoCapture(caminho_video_1)
ca2 = cv2.VideoCapture(caminho_video_1)

lista_imagens = []


fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('C:/Users\lourd\Videos\Captures/teste.avi',fourcc, 25.0, (640,480))



def compara(imageA, imageB):
    s = ssim.compare_ssim(imageA, imageB)
    return s



def analisa(imagem_A, imagem_B):
    cont = True
    maior_valor = 0
    for imagem in imagem_B:
        if cont == True:
            maior_valor = compara(imagem_A, imagem)
            cont = False
        elif compara(imagem_A, imagem) > maior_valor:
            maior_valor = compara(imagem_A, imagem)
    return maior_valor


success2 = success1 = True
cont_frames_vid2 = cont_encerra_vid2 = cont_frame_vid1 = cont_encerra_vid1 = porcentagem = 0


while True:
    success2, image2 = ca2.read()
    if success2 == True:
        image_resize2 = cv2.resize(image2, (400, 400), 2)
        To_cinza2 = cv2.cvtColor(image_resize2, cv2.COLOR_BGR2GRAY)
        lista_imagens.append(To_cinza2)
        print('Video 2 frames carregados: ', cont_frames_vid2)
        cont_frames_vid2 += 1
    if success2 == False: #Não conheço bem o opencv e essa foi a melhor forma que eu consegui para sair do loop quando acaba os frames do video. Se alguém tiver uma dica agradeço
        cont_encerra_vid2 += 1
        if cont_encerra_vid2 > 40:
            break


while True:
    success1, image1 = ca1.read()
    if success1 == True:
        cont_frame_vid1 += 1
    if success1 == False:
        cont_encerra_vid1 += 1
        if cont_encerra_vid1 > 40:
            break


print(f' Frames carregados:  Video1: {cont_frame_vid1}: Video2: {cont_frames_vid2}')
sleep(1)
print('Começando análise.')
sleep(2)

for c in range(cont_frame_vid1):
    success1, image1 = ca1.read()
    if success1 == True:
        image_resize1 = cv2.resize(image1, (400, 400), 2)
        To_cinza1 = cv2.cvtColor(image_resize1, cv2.COLOR_BGR2GRAY)

        if analisa(To_cinza1, lista_imagens) < 70:
            out.write(image1)
            print(f'Salvando frame numero: {cont_frames_processo}, Progresso total: {porcentagem}%.')
    porcentagem = (c / cont_encerra_vid1 * 100)

print('Fim.')
ca1.release()
ca2.release()
    
asked by anonymous 13.07.2018 / 02:21

0 answers