Jack Guy
Jack Guy

Reputation: 8523

Python OpenCV Error: Sizes of input arguments do not match

I'm creating an application that uses OpenCV and other Python libraries to grab a region of someone's screen, and compare it to a template image. This code works perfectly until the "dst" line. At that point I recieve the error

141 825 3 141 825 3 OpenCV Error: Sizes of input arguments do not match (The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array')

Normally I would think this error arose because of different image sizes. But they are the exact same. I confirmed this by printing their heights, widths, and depths. As you can see above, they are identical.

import win32api, win32con, win32gui
import os
import sys
import time
import Image
import ImageGrab

import cv2
import numpy as np

player = cv2.imread('./images/bg_eagle_player.png')

#User Settings:
SaveDirectory=r'C:\Users\something\somethingeelse'

while (1):
    img=ImageGrab.grab()
    saveas=os.path.join(SaveDirectory,'test.png')
    img.save(saveas)

    img = cv2.imread('test.png')
    player_border = img[436:577, 378:1203]

    height, width, depth = player.shape
    print height, width, depth

    height, width, depth = player_border.shape
    print height, width, depth

    dst = cv2.addWeighted(player,0.7,img,0.3,0)

    cv2.imshow('image',dst)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    time.sleep(0.1)

Any ideas?

Upvotes: 0

Views: 12177

Answers (1)

holdenweb
holdenweb

Reputation: 37163

Your img and player images appear to be of different sizes.

Upvotes: 3

Related Questions