TensorFlow OpenCV网络摄像头悬挂

tensorflow + opencv webcam hangs

本文关键字:摄像头 网络 OpenCV TensorFlow      更新时间:2023-10-16

环境:Mac Machine,用访客OS在虚拟机内运行我的代码:ubuntu 14.4 lts。

我正在示例中在Tensorflow工作区中编译OpENCV。我的工作区和opencv.build文件看起来与此处提到的文件相似

我为OpenCV TensorFlow项目的构建文件如下:

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读()悬挂?

您上面链接的OpenCV Bazel构建配置似乎只是CMAKE构建的所有.So文件。也许您需要将-dwith_ffmpeg = off cflag传递给cmake?如果您像上述一样将其传递给Bazel,则仅适用于Main.cc.

的汇编。