ﺭ我想说l want youﺭ李艾佛 2018-12-18 18:35 采纳率: 0%
浏览 1859

我在使用Python对图像进行二值化的时候,用如下的代码却出现了这样的错误,求教?????????

代码:import cv2
gaosi = cv2.adaptiveThreshold(huidu, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 7)
io.imshow(gaosi)#

错误:error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\thresh.cpp:1524: error: (-215) src.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) in function cv::adaptiveThreshold

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 11:38
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在OpenCV中,cv2.adaptiveThreshold() 函数用于执行自适应阈值处理。它接受几个参数:

    • huidu: 输入的图像数据。
    • gaosi: 输出的图像数据(通常为灰度图)。
    • thresh_type: 指定阈值类型,默认值为cv2.THRESH_BINARY
    • thresholds: 阈值数组,默认为[0, 255]。
    • maxval: 最大阈值,默认为255。
    • min_val: 最小阈值,默认为0。

    根据您提供的错误信息,“src.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3))”,这表明您的输入图像的数据类型不正确或可能包含非数字元素。

    要解决此问题,请确保您的输入图像仅包含数字,并且它们的类型符合OpenCV的要求。例如,如果您的输入图像是一个3通道彩色图像,那么每个通道应该只包含数字0到255。如果您正在使用OpenCV来处理具有不同数量通道和像素值范围的图像,请检查您的图像数据是否已转换为标准格式。例如,对于具有3个通道的图像,您可以将每个通道设置为一个不同的整数范围,如 (0, 256)(0, 255)

    另外,OpenCV中的cv2.adaptiveThreshold()函数可能会遇到一些问题,特别是当输入图像中含有非数字元素时。在这种情况下,尝试使用其他方法,比如直接使用cv2.threshold()函数或者使用更复杂的预处理步骤,以去除或转换这些非数字元素。

    评论

报告相同问题?