openCV error: Bad argument (unrecognized or unsupported array type)

在使用OpenCV的Otsu算法时遇到错误:'Bad argument (unrecognized or unsupported array type)'。问题出现在cvWaitKey(0)后释放IplImage对象导致的。解决方案是在cvWaitKey(0)之后再释放资源,以防止引用已释放的内存。了解OpenCV的错误处理机制有助于更好地调试此类问题。
摘要由CSDN通过智能技术生成

problem:

 

模仿otsu算法时撞见的错误:

我只是用该算法来提取阈值并显示在控制台上,running的时候,cvWaitKey(0)之前都正常,按下任意键结束程序后,出现

openCV error: Bad argument (unrecognized or unsupported array type) in unknown function, file ../../../src/cxcore/cxarray.cpp line985

 

细查之下,发现调用cvostu(src)时IplImage 结构所占内存以释放掉,故在cvWaitKey(0) 之后再cvReleaseImage(&src)时,找不到src 所引用的地址,故而报错。

 

solution:

obviously

 

 

after solution:

遂查了openCv的错误机制,以下引用自

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是OpenCV中的一个错误,意思是在函数“cvgetmat”中出现了未识别或不支持的数组类型。这通常是由于传递给函数的参数类型不正确或不支持所导致的。建议检查代码中的参数类型和函数调用,确保它们与OpenCV支持的类型匹配。 ### 回答2: 该错误信息出现在使用OpenCV中的cvGetMat函数时,通常是因为传递给该函数的参数不符合函数的要求而导致的。cvGetMat函数是一个将输入数组转换为矩阵的函数,它需要一个参数表示输入数组。 在出现“unrecognized or unsupported array type”错误时,往往是因为使用了不支持的数组类型,例如非常规的图像尺寸、像素类型或通道数。OpenCV支持多种图像格式和数据类型,如果参数的类型不正确,那么就会出现该错误。 为了避免出现这一错误,我们需要仔细检查传递给cvGetMat函数的参数是否符合要求。首先,我们需要确定输入数组的类型是否正确,例如是否为Mat类型。其次,我们需要检查输入数组的大小、颜色空间和像素类型是否符合要求。 如果发现传递给cvGetMat函数的参数出现问题,最好的解决方法是修改参数,确保它符合cvGetMat函数的要求。此外,我们还可以考虑使用其他OpenCV函数来处理图像或数据,以避免出现这种错误。 ### 回答3: 这个错误的产生通常是由于在OpenCV函数调用中,输入的参数类型不正确或不被支持。在这个特定的错误中,函数 'cvgetmat' 找不到或不支持指定的数组类型,因此无法执行。 解决这个错误的步骤有几个。首先,我们需要检查代码中相应的函数调用,并且确保传递给它函数的所有参数都是有效的类型。我们还应该检查代码中使用的OpenCV版本,以确保它与当前使用的OpenCV库是相容的。 如果这些都没有帮助,我们可以尝试在代码中添加一些错误处理程序来检查问题的原因。例如,我们可以添加代码来检查数组大小是否正确,以及数组中是否包含无效的值。我们还可以使用 OpenCV 的调试工具来查看函数在执行时产生的任何错误消息或警告。 最后,我们可以参考 OpenCV 的文档和社区论坛来查找其他人遇到的类似问题,并尝试解决这些问题。这可以帮助我们更深入地理解 OpenCV 库,以便更有效地解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值