TypeError:不支持src数据类型= 23

时间:2017-06-16 15:07:11

标签: python-3.x opencv typing

希望你们到目前为止都有一个美好的一天。

我有一个python 3.6脚本,它将随机(实际上它更像是详尽的所有现有的)图像转换序列与openCV应用于图像,将其与搜索结果进行比较并尝试下一个。

图像转换包括:

  • 阈值
  • 形态转换
  • 平滑
  • 玩颜色(使用cvtColor,还有手工制作的算法)
  • 玩渐变

我不会为此展示代码,因为它基本上只是一组繁重的循环和数组,我认为这些代码与我的问题无关。

显然,大多数尝试过的组合都不是有效组合,因为,例如,如果在从BGR转换为GRAY后完成,将BGR转换为GRAY可能效果不佳。我知道它不是我的pythonic,因为反对EAFP思考,但由于异常捕获成本很高并经常发生,并且在经过一些重度处理后的某个时候,我想添加一些可以防止大多数情况的条件他们

为了做到这一点,我对我的函数数组进行了排序,通过检查我是否在一定范围内,我可以检查转换的有效性,如果不好则中止。

if steps[it] >= THREE_CHANNELS_LIMIT:
    if len(cur_img.shape) == 3:
        if steps[it] >= SINGLE_CHANNEL_LIMIT:
            break
        elif cur_img.dtype not in BGR_DEPTHS:
            break

其中steps [it]是指向要执行的下一个函数的索引,THREE_CHANNELS_LIMIT或SINGLE_CHANNEL_LIMIT是每个函数范围边界的特定索引。 上面的代码可以防止在多通道numpy图像上进行单通道转换。

现在我的问题是:从记录的异常中,我可以看到一些函数,OpenCV形态函数,仍然会抛出错误。 TypeError: src data type = 23 is not supported

我认为这可能是像素深度的问题。但是,我不知道23是什么类型/意味着什么,我想知道它是为了猜测问题发生的频率,并确定我是否应该添加另一个条件或让try-except语句处理它。

通过网络搜索但发现很多类型= 17,类型= 18或类型= 0问题,但似乎无法找到这个问题。

是否有文件列出了用于错误消息的所有OpenCV类型?或者也许你们其中一个人知道这个特定的一个,这对我现在的案例有用吗?

抱歉我的英语无情。目前的speelchecker只是强调了一切,所以我可能也留下了很多错别字。

0 个答案:

没有答案