gpt4 book ai didi

python - 简单拼接和 OpenCV 3.2.0 出错 - cv2.cpp:152: error: (-215) The data normally should be NULL!在函数 NumpyAllocator::allocate 中

转载 作者:太空宇宙 更新时间:2023-11-03 21:25:30 35 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 拼接图像,但即使是最简单的代码,我也会收到错误 cv2.cpp:152: error: (-215) The data should normally be NULL!在函数 NumpyAllocator::allocate 中

我在 Mac 上用 python 2.7.10 和 Windows 上用 python 3.6.1 测试过它

代码如下所示:

import cv2

cv2.ocl.setUseOpenCL(False)
stitcher = cv2.createStitcher(False)
foo = cv2.imread("image1.jpg")
bar = cv2.imread("image2.jpg")
result = stitcher.stitch((foo,bar))

根据谷歌搜索,一些人建议 cv2.ocl.setUseOpenCL(False) 解决了这个问题,但显然我的情况不是这样:)

如有任何建议,我们将不胜感激 :)

最佳答案

编辑 - 2018 年 8 月 15 日

此问题现已从 OpenCV 3.3 开始修复。如果您还没有,请至少升级到这个版本。请参阅问题页面末尾的评论:https://github.com/opencv/opencv/issues/6969 .

对于那些没有使用 OpenCV 3.3 及更高版本的人,我将在下面保留之前的答案。


不幸的是,这是 OpenCV 3.x 中的一个错误,尚未修复。这是 Github 上问题页面的链接:https://github.com/opencv/opencv/issues/6969

在页面上,破解此问题的一种方法是实际打开 modules/python/src2/cv2.cpp 源文件并删除 if 语句在该错误的第 152 行附近。 if 语句是:

    if( data != 0 )
{
CV_Error(Error::StsAssert, "The data should normally be NULL!");
// probably this is safe to do in such extreme case
return stdAllocator->allocate(dims0, sizes, type, data, step, flags, usageFlags);
}

问题页面上有一个人删除了整个 if 语句,然后重新编译了 OpenCV,这终于成功了。不幸的是,这是唯一已知的解决方法,即使禁用了 OpenCL。

请注意,此错误仅存在于 Python 接口(interface)中,因为在 Python 和 C++ 环境之间交互的源文件(即 cv2.cpp 文件)中会抛出异常。您绝对可以让拼接器在 native C++ API 中工作,而不会抛出此异常。

关于python - 简单拼接和 OpenCV 3.2.0 出错 - cv2.cpp:152: error: (-215) The data normally should be NULL!在函数 NumpyAllocator::allocate 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43002279/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com