繁体   English   中英

OpenCV(3.4.2): error: (-215:Assertion failed) with Template Matching Method

[英]OpenCV(3.4.2): error: (-215:Assertion failed) with Template Matching Method

我使用规范化作为模板匹配的预处理方法。 但是,我在运行代码时遇到了错误

错误:错误:OpenCV(3.4.2)/opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/imgproc/src/templ10 : 错误: (-215:Assertion failed) (depth == 0 || depth == 5) && type == _templ.type() && _img.dims() <= 2 in function 'matchTemplate'

这是我的预处理方法:

def Image_Preprocessing (image):
    Gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)  # converting the image to grayscale image
    resized_image = cv2.resize(Gray_image, (width, height))  # Resize the image 
    mean, stdDev = cv2.meanStdDev(resized_image)  #Get Mean and Standard-deviation
    Normalized_image = (resized_image-mean)/stdDev  #Normalize the image  
    # Scale the normalized values to integer range
    Normalized_image -= Normalized_image.min() 
    Normalized_image /= Normalized_image.max()
    Normalized_image *= 255 # [0, 255] range

    return  Normalized_image

我该如何解决这个问题?

在任何情况下,您都应该验证@HansHirse 的答案,如果问题甚至是您的预处理,您可以试试这个:

def Image_Preprocessing (image):
    Gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)  # converting the image to grayscale image
    resized_image = cv2.resize(Gray_image, (width, height))  # Resize the image
    Normalized_image = np.array(np.divide(resized_image, np.amax(resized_image)), dtype=np.float64) # Normalizes to float 0 - 1, ensure float
    # Scale the normalized values to integer range
    Normalized_image *= 255 # [0, 255] range
    Normalized_image = np.uint8(Normalized_image)

    return  Normalized_image

这将返回一个 uint8 图像,如果您的模板也是 uint8,则应该没有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM