【问题标题】:tensorflow + opencv webcam hangstensorflow + opencv 网络摄像头挂起
【发布时间】:2016-12-22 05:05:19
【问题描述】:

环境:MAC 机器,在虚拟机中运行我的代码,客户操作系统:Ubuntu 14.4 LTS。

我在示例下的 tensorflow 工作区中编译 openCV。我的 WORKSPACE 和 opencv.BUILD 文件看起来与提到的here 类似

我的 opencv + tensorflow 项目的 BUILD 文件如下所示:

package(default_visibility = ["//tensorflow:internal"])

licenses(["notice"])  # Apache 2.0

exports_files(["LICENSE"])

cc_binary(
    name = "label_image",
    srcs = [
        "main.cc",
    ],
    linkopts = ["-lm"],
    copts = ["-DWITH_FFMPEG=OFF"],
    deps = [
        "//tensorflow/cc:cc_ops",
        "//tensorflow/core:framework_internal",
        "//tensorflow/core:tensorflow",
        "@opencv//:opencv"
    ],
)

filegroup(
    name = "all_files",
    srcs = glob(
        ["**/*"],
        exclude = [
            "**/METADATA",
            "**/OWNERS",
            "bin/**",
            "gen/**",
        ],
    ),
    visibility = ["//tensorflow:__subpackages__"],
)

如果我禁用 tensorflow 依赖项(并注释 tensorflow 相关代码)。我可以看到网络摄像头已正确捕获。像这样:

deps = [
            #"//tensorflow/cc:cc_ops",
            #"//tensorflow/core:framework_internal",
            #"//tensorflow/core:tensorflow",
            "@opencv//:opencv"
        ],

但如果我仍然保留代码注释/未注释并且还保留 tensorflow 依赖项,我的网络摄像头会挂在 VideoCapture::read()

默认情况下,opencv 使用 FFMPEG 编解码器,我尝试启用和禁用 FFMPEG。有人可以帮助我为什么在项目中编译 tensorflow 库时让我的 openCV read() 挂起?

【问题讨论】:

  • 通过在 opencv.BUILD 文件中更改 MAC (*.dylib) 的适当动态库,我可以让 tensorflow 和 OpenCV 在 MacOS 上运行。

标签: c++ opencv tensorflow


【解决方案1】:

您在上面链接的 OpenCV Bazel 构建配置似乎只是 glob CMake 构建的所有 .so 文件。也许您需要将 -DWITH_FFMPEG=OFF cflag 传递给 CMake?如果像上面那样将它传递给 Bazel,它只会应用于 main.cc 的编译。

【讨论】:

  • 感谢您的意见,但这并没有帮助我解决我原来的相机挂起问题。
  • 悬挂问题很难诊断。它似乎也与您提供的信息正交。我已尽我所能提供的信息。
猜你喜欢
  • 1970-01-01
  • 2012-06-12
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 2020-03-06
  • 2012-06-19
  • 2012-12-20
相关资源
最近更新 更多