错误:(-2:未指定的错误)该功能未实现。使用 Windows、GTK+ 2.x 或 Cocoa 支持重建库

Posted

技术标签:

【中文标题】错误:(-2:未指定的错误)该功能未实现。使用 Windows、GTK+ 2.x 或 Cocoa 支持重建库【英文标题】:error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support 【发布时间】:2021-07-11 04:45:03 【问题描述】:

我在 jupyter notebook 上做一个手语检测项目。在运行实时检测代码时,我遇到了如下所示的错误:

OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-1drr4hl0\opencv\modules\highgui\src\window.cpp:651:错误:(- 2:Unspecified error) 功能未实现。使用 Windows、GTK+ 2.x 或 Cocoa 支持重建库。如果您在 Ubuntu 或 Debian 上,请安装 libgtk2.0-dev 和 pkg-config,然后重新运行 cmake 或在函数 'cvShowImage' 中配置脚本

尽管尝试了许多我在网上找到的解决方案,但我仍然遇到同样的错误。

遇到错误的代码是: 而真: ret, frame = cap.read() image_np = np.array(frame)

input_tensor = tf.convert_to_tensor(np.expand_dims(image_np, 0), dtype=tf.float32)
detections = detect_fn(input_tensor)

num_detections = int(detections.pop('num_detections'))
detections = key: value[0, :num_detections].numpy()
              for key, value in detections.items()
detections['num_detections'] = num_detections

# detection_classes should be ints.
detections['detection_classes'] = detections['detection_classes'].astype(np.int64)

label_id_offset = 1
image_np_with_detections = image_np.copy()

viz_utils.visualize_boxes_and_labels_on_image_array(
            image_np_with_detections,
            detections['detection_boxes'],
            detections['detection_classes']+label_id_offset,
            detections['detection_scores'],
            category_index,
            use_normalized_coordinates=True,
            max_boxes_to_draw=5,
            min_score_thresh=.5,
            agnostic_mode=False)

cv2.imshow('object detection',  cv2.resize(image_np_with_detections, (800, 600)))

if cv2.waitKey(1) & 0xFF == ord('q'):
    cap.release()
    break

请帮帮我!

【问题讨论】:

你是如何安装 OpenCV 的?你自己建的吗? 使用 pip 安装 【参考方案1】:

几个小时后,在 Karthik Thilakan 的第一个答案的评论下看到了这个解决方案

pip uninstall opencv-python-headless -y 

pip install opencv-python --upgrade

这在 conda 环境中对我有用。谢谢卡提克! :)

【讨论】:

【参考方案2】:

这个错误主要与 Pycharm Ide 相关,我通过更改项目解释器解决了这个问题,互联网上没有一个给定的解决方案对我有用。

【讨论】:

【参考方案3】:

我试图将一组文件从 Ubuntu 18.04 LTD 移动到我的 Windows10,并运行 cli 进行推理,并出现与开篇文章中提到的相同的错误......我正在检查版本Ubuntu 和 Windows 中的 Open-CV 和 Open-CV Headless,它们完全相同......当它在 Ubuntu 上执行时,它在 Windows 中抛出了错误......我删除了 Open-CV无头并升级了Open-CV,并使用相同的命令集和Windows开始执行CLI进行推理......

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review【参考方案4】:

本周我安装了另一个 GPU,终于升级到了 Tensorflow 2,突然,同样的问题出现了。我终于找到了我的错误以及为什么卸载和重新安装 opencv 对某些人有效。该问题在名为 METADATA 的 opencv-python dist-packages 中的文本文件中明确说明。

它说明了;

有四种不同的包(请参阅下面的选项 1、2、3 和 4),您应该只选择其中一个。不要在同一个环境中安装多个不同的包。

此外,文件说;

如果您不使用 cv2.imshow 等,则应始终使用这些软件包。或者您正在使用 OpenCV 之外的其他包(例如 PyQt)来创建您的 GUI。

参考

用于服务器(无头)环境的包 ...(没有)GUI 库依赖项

所以,如果你跑了;

pip list | grep opencv

结果是不止一个 opencv 版本,你可能已经找到了你的问题。虽然卸载和重新安装 opencv 可能会解决您的问题,但更巧妙的解决方案是简单地卸载无头版本,因为它不关心 GUI,因为它应该在服务器环境中使用。

【讨论】:

在我升级 Tensorflow 时打了他。 pip uninstall opencv-python-headless 修复了它。 Ubuntu 20.04、python 3.8、Opencv 4.5.4【参考方案5】:

我在 Windows 10 上使用 yolov5 时遇到了完全相同的错误。通过键入重新构建库

pip uninstall opencv-python 

然后

pip install opencv-python

为我工作。

【讨论】:

谢谢,我上周解决了这个问题。正如你提到的,我尝试使用以下命令重新安装 OpenCV pip uninstall opencv-python-headless -y pip install opencv-python --upgrade @KarthikThilakan 的上述评论值得自己回答 尝试作为 greg245 提到没有成功。 Karthik Thilakan 建议的命令对我有用

以上是关于错误:(-2:未指定的错误)该功能未实现。使用 Windows、GTK+ 2.x 或 Cocoa 支持重建库的主要内容,如果未能解决你的问题,请参考以下文章

wave.error: # 未指定频道

移动分配比复制分配慢——错误、功能或未指定?

CKEDITOR - 未捕获的错误:元素不支持指定的元素模式:“元”

已请求分拆安装,但该应用未拥有

随机“未指定应用程序加密密钥”

cv2.imshow 错误“功能未实现”