cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘Sobel‘

这篇具有很好参考价值的文章主要介绍了cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘Sobel‘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cv2.error: OpenCV(4.5.5) 👎 error: (-5:Bad argument) in function ‘Sobel’

Overload resolution failed:

  • src data type = 23 is not supported
  • Expected Ptrcv::UMat for argument ‘src’

报错代码:

def sobel(img):
    add_x_total = torch.zeros(img.shape)

    for i in range(img.shape[0]):
        x = img[i, :, :, :].squeeze(0).cpu().detach().numpy().transpose(1, 2, 0)

        x = x * 255

       # print(x.dtype)

        x_x = cv2.Sobel(x, cv2.CV_64F, 1, 0)
        x_y = cv2.Sobel(x, cv2.CV_64F, 0, 1)
        add_x = cv2.addWeighted(x_x, 0.5, x_y, 0.5, 0)
        add_x = transforms.ToTensor()(add_x).unsqueeze(0)
        add_x_total[i, :, :, :] = add_x

    return add_x_total

报错原因:

这个错误提示是由于传入 cv2.Sobel() 函数的图像类型不受支持所引起的。根据错误信息,是图像的数据类型不正确。

数据类型不匹配:Sobel函数要求输入图像的数据类型必须是浮点型。在代码中,处理图像前执行了以下操作:x = x * 255,这将将图像数据的数据类型从浮点型转换为整数。

解决办法:

在调用Sobel函数之前,将图像 x 的数据类型进行调整,确保输入图像的数据类型是浮点型。使用x = x.astype(np.float32)将NumPy数组的数据类型转换为浮点型。文章来源地址https://www.toymoban.com/news/detail-811416.html

x = x * 255
x = x.astype(np.float32)  # 将数据类型转换为浮点型
x_x = cv2.Sobel(x, cv2.CV_64F, 1, 0)
x_y = cv2.Sobel(x, cv2.CV_64F, 0, 1)

到了这里,关于cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘Sobel‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包