error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in funct

在进行图片掩膜的时候遇到了这样的问题:
在这里插入图片描述
我的原代码:

def img_depth_mask(picpath, depthpath):
    pic_list = os.listdir(picpath)
    for pic in pic_list:
        image = cv2.imread(depthpath + '/' + pic, 0)
        thresh = filters.threshold_otsu(image)  # 返回一个阈值

        dst = (image <= thresh) * 1.0  # 根据阈值进行分割
        dst = dst*255

        imname = picpath + '/' + pic
        img = cv2.imread(imname, cv2.IMREAD_COLOR)
        res = cv2.bitwise_and(img, img, mask=dst)
        cv2.imshow('res',res)
        cv2.waitKey()

在找怎么解决这个问题的时候,看到有人说是掩膜的图像通道数不是单通道。在掩膜中,必须是单通道图像。但是很显然,我这边的掩膜图案就是单通道。
后来我自己把掩膜图像和原图像print出来看了一下,发现原来两种图像的数字类型不同,一个是float,一个是int。

        dst = (image <= thresh) * 1.0  # 根据阈值进行分割
        dst = dst*255
        dst = np.array(dst, dtype=np.uint8)

加了一行代码后,成功解决错误。
简单记录一下自己遇到的问题,希望能够帮到大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值