OpenCV错误:断言失败((深度== CV_8U ||深度== CV_32F)

时间:2016-10-11 07:03:17

标签: python opencv matchtemplate

我知道这个问题之前已被问过很多次,但是没有一个问题可以解决下面的问题。我有两个np数组都是uint8但opencv似乎错误地认为一个是32F。为什么这样,如果我希望匹配两个图像作为模板,我如何在python中修复它。

    Out[1]: 
array([[  0,   0,   0, ...,   0,   0,   0],
       [  0,  23, 196, ..., 254, 254, 254],
       [  0, 197, 254, ..., 254, 254, 254],
       ..., 
       [  0, 254, 254, ..., 250, 249, 249],
       [  0, 254, 254, ..., 249, 249, 249],
       [  0, 254, 254, ..., 249, 248, 248]], dtype=uint8)


    Out[2]: 
array([[[213, 138,  69],
        [212, 137,  68],
        [212, 138,  66],
        ..., 
        [150,  71,   8],
        [150,  71,   8],
        [150,  71,   8]],
.....
       [[ 27,  22,  12],
        [ 27,  22,  12],
        [ 28,  22,  12],
        ..., 
        [ 17,  11,   1],
        [ 17,  11,   1],
        [ 17,  11,   1]]], dtype=uint8)

当我尝试匹配模板时会导致错误:

cv2.matchTemplate(img,template,method)

值得注意的是,我创建了两个numpy数组,如下所示: 第一个:

img = cv2.cvtColor(np.array(Image.open('new_screenshot.png')), cv2.COLOR_BGR2RGB)

和第二个:

template = cv2.imread('pics/sn/3d.png',0)

是的我知道,我可以加载cv2.imread并且一切都会好的,但在我的情况下,这是不可能的,因为我的exmple中需要PIL(用于制作屏幕截图img = cv2.cvtColor(np.array(ImageGrab.grab()), cv2.COLOR_BGR2RGB))所以我需要从PIL到Opencv的转换,我需要让上面的例子起作用。

0 个答案:

没有答案