1

Below is the code for comparing two images I am using:

# import the necessary packages
import cv2
from skimage.measure import compare_ssim

# construct the argument parse and parse the arguments


# load the two input images
imageA = cv2.imread('iron1.jpg')
imageB = cv2.imread('end.jpg')
(H, W, C) = imageA.shape
imageB = cv2.resize(imageB, imageA.shape)
# convert the images to grayscale
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)

(score, diff) = compare_ssim(grayA, grayB, full=True)
diff = (diff * 255).astype("uint8")
print("SSIM: {}".format(score))

and Getting below error for resize of two images:

  File "C:/Users/afaraz/PycharmProjects/tet/opencv_test.py", line 13, in <module>
    imageB=cv2.resize(imageB, imageA.shape)
TypeError: function takes exactly 2 arguments (3 given)

Please help on this issue!!

Atif Faraz
  • 25
  • 2
  • shape has 3 arguments for a color image. So imageA.shape has 3 arguments. But resize only wants (w,h), not (w,h,c). So you need imageA.shape[:2] so that it returns only (w,h) and not (w,h,c) – fmw42 Aug 13 '20 at 16:35
  • Still getting same error: – Atif Faraz Aug 14 '20 at 05:26
  • 1
    shape gives (h,w,c). resize needs (w,h). So the two arguments need to be swapped. – fmw42 Aug 14 '20 at 16:17

0 Answers0