首页 > 解决方案 > python opencv cv2.threshold(), TypeError: Expected cv::UMat for argument 'mat'

问题描述

import numpy as np
import cv2

imgfile = 'mi.jpg'
img = cv2.imread(imgfile,0)

tmp = img.copy()
kernel_sharpening = np.array([[-1,-1,-1],[-1,9,-1],[-1,-1,-1]])

tmp1 = cv2.pyrDown(tmp)  # down sampleing
tmp2 = cv2.GaussianBlur(tmp1,(3,3),0)   # bluring
tmp3 =cv2.filter2D(tmp2,-1,kernel_sharpening) # sharping

tmp3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,2)


cv2.imshow('threshold',tmp3)
cv2.waitKey()

cv2.destroyAllWindows()

上面的代码运行良好。但是,下面的代码不起作用。

高于 cv2.adaptiveThreshold(),低于 cv2.threshold()

openvv版本是4。

import numpy as np
import cv2

imgfile = 'mi.jpg'
img = cv2.imread(imgfile,0)

tmp = img.copy()
kernel_sharpening = np.array([[-1,-1,-1],[-1,9,-1],[-1,-1,-1]])

tmp1 = cv2.pyrDown(tmp)  # down sampleing
tmp2 = cv2.GaussianBlur(tmp1,(3,3),0)   # bluring
tmp3 =cv2.filter2D(tmp2,-1,kernel_sharpening) # sharping
tmp3 = cv2.threshold(tmp3,127,255,cv2.THRESH_BINARY)

cv2.imshow('threshold',tmp3)
cv2.waitKey()

cv2.destroyAllWindows()

回溯(最后一次调用):文件“down.py”,第 26 行,在 cv2.imshow('threshold',tmp3) 类型错误:参数 'mat' 的预期 cv::UMat

标签: pythonopencv

解决方案


threshold() 返回一个元组...文档的工作原理


推荐阅读