Opencv 断言因暗网而失败

Posted

技术标签:

【中文标题】Opencv 断言因暗网而失败【英文标题】:Opencv Assertion failed with darknet 【发布时间】:2018-06-23 14:13:55 【问题描述】:

我曾经在 Ubuntu 18.04 上安装过 OPENCV 3.4.1。我试图在我的机器上编译 YOLO3,但它无法编译,这导致我进入this issue。该问题中的一项建议建议使用 3.4.0,它有点工作。

我在 cmake 中使用了这些选项:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D BUILD_EXAMPLES=ON ..

然后我做了

make -j8    
sudo make install
sudo ldconfig

使用 opencv 3.4.0 我能够编译它。但是,当我尝试运行它时,我收到了错误(如下所示)。这很奇怪,因为我刚刚安装了 3.4.0,它显示了一些与 3.4.1 相关的错误。

OpenCV(3.4.1) Error: Assertion failed ((flags & FIXED_TYPE) != 0) in type, file <local_path>/opencv-3.4.1/modules/core/src/matrix_wrap.cpp, line 807

当我什至没有安装它时,它不应该显示 3.4.1 错误。我还删除了我之前编译 3.4.1 的目录,但错误仍然指向已删除的目录(&lt;local_path&gt;/opencv-3.4.1/)。位于我的主文件夹中,其中包含许多名称奇怪的目录。因此我将其排除在外以避免任何混淆。

我能够确认安装了 3.4.0:

# han @ falcon in ~ [19:36:41] 
$ /usr/local/bin/opencv_version
3.4.0

我想知道是什么导致了上面提到的错误(与断言有关的错误)

【问题讨论】:

可能系统中仍然安装了 3.4.2 库,并且 opencv 库的符号链接仍然指向它们。尝试命令 locate opencv*.so 或 sth. 发生这种情况是因为当我在 ZSH 上运行 sudo apt-get purge libopencv* 时没有产生任何结果(收到错误消息“找不到匹配项:libopencv*”)。但是 bash 上的相同命令删除了这些配置文件,一切正常。 【参考方案1】:

发生这种情况是因为sudo apt-get purge libopencv* 在 ZSH 上运行它时没有产生任何结果(我忽略了一条错误消息“找不到匹配项:libopencv*”)。但是 bash 上的相同命令从早期安装中删除了配置文件。

Darknet 无法与 opencv 3.4.1 一起编译。所以我建议将opencv降级到3.4.0。如果你想在 3.4.1 上运行它,请查看 Github 上的this issue。

【讨论】:

以上是关于Opencv 断言因暗网而失败的主要内容,如果未能解决你的问题,请参考以下文章

OPENCV / C++: approxpolydp 断言失败错误

为啥我会收到此 OpenCV 错误断言失败?

opencv 读取图像断言失败

是啥导致“OpenCV(4.0.1)错误:断言失败(m.dims <= 2)”

图像处理 opencv 3.0 断言失败错误

OpenCV 错误:断言失败