¿Cómo encontrar PSNR y SSIM de dos archivos de video en python usando openCV y otras bibliotecas?

Quiero descubrir PSNR y SSIM de dos archivos de video en python usando openCv y numpy. Cómo encontrar PSNR en python

Intenté debajo del código para SSIM

# compute the Structural Similarity Index (SSIM) between the two # images, ensuring that the difference image is returned (score, diff) = compare_ssim(grayA, grayB, full=True) diff = (diff * 255).astype("uint8") print("SSIM: {}".format(score)) # threshold the difference image, followed by finding contours to # obtain the regions of the two input images that differ thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = cnts[0] if imutils.is_cv2() else cnts[1] # loop over the contours for c in cnts: # compute the bounding box of the contour and then draw the # bounding box on both input images to represent where the two # images differ (x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(imageA, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.rectangle(imageB, (x, y), (x + w, y + h), (0, 0, 255), 2) 

Puede leer los cuadros de video por cuadros y usar esta función para calcular la similitud entre cuadros y encontrar la media.

Asegúrate de proporcionar la ruta completa de la imagen.

 def compare(ImageAPath, ImageBPath): img1 = cv2.imread(ImageAPath) # queryImage img2 = cv2.imread(ImageBPath) image1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) image2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) # trainImage score, diff = compare_ssim(image1, image2, full=True, multichannel=False) print("SSIM: {}".format(score)) 

Si la imagen es colorida y no desea utilizar una imagen gris, pase

 multichannel=True