1,报错TypeError: Expected Ptr<cv::UMat> for argument ‘mat‘
2,报错时代码段如下
import cv2.cv2
import numpy as np
if __name__ == "__main__":
img_path = "1.png"
img = cv2.imread(img_path)
# #获取图片的宽和高
# width,height = img.shape[:2][::-1]
# #将图片缩小便于显示观看
# img_resize = cv2.resize(img,
# (int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
# cv2.imshow("img",img_resize)
# print("img_reisze shape:{}".format(np.shape(img_resize)))
cv2.imshow("img", img)
#将图片转为灰度图img
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
#img_gray = cv2.cvtColor(img_resize,cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray",img_gray)
#print("img_gray shape:{}".format(np.shape(img_gray)))
#2、固定阈值二值化
im_at_fixed = cv2.threshold(img_gray, 255, 255, cv2.THRESH_BINARY)
cv2.imshow("im_at_fixed", im_at_fixed)
# 3、算术平法的自适应二值化
im_at_mean = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10)
cv2.imshow("im_at_mean", im_at_mean)
# 4、高斯加权均值法自适应二值化
im_at_GOS = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 7)
cv2.imshow("im_at_GOS", im_at_GOS)
#膨胀
#腐蚀
print(cv2.__version__) #用于测试是否输出
cv2.waitKey()
3,网上查了,再试了下真的是因为这个ret,(本来我还郁闷ret是干嘛的)
修改后代码段:
网上启发我的片段