OpenCV waitKey() 抛出断言:使用 Windows、GTK+ 2.x 或 Cocoa 支持重建库

问题描述 投票:0回答:3

我已经训练了某个模型并具有权重(weight.pt)并且能够从图像和视频中检测对象,但问题是网络摄像头未打开。

在谷歌协作中训练我的模型

!git clone https://github.com/ultralytics/yolov5 
%cd yolov5
%pip install -qr requirements.txt
%pip install -q roboflow
%pip install torch==1.8.2 torchvision==0.9.2 torchaudio===0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111


from roboflow import Roboflow
import torch
import os
import numpy as np
from matplotlib import pyplot as plt
from IPython.display import Image, clear_output #to display image
import glob
from IPython.display import Image, display



rf_model = Roboflow(model_format="yolov5",notebook="ultralytics")

os.environ['DATASET_DIRECTORY'] = "/content/dataset" #setting environment

//data set
dataset = project.version(5).download("yolov5")

!python train.py --img 640 --batch 16 --epochs 1 --data {dataset.location}/data.yaml --weight yolov5x.pt --cache --worker 2

!python detect.py  --img 640 --source 0 --weigths {path/to custom weights}

出现错误

 File "c:\Users\Admin\Desktop\air\Tool_Object_Detection\yolov5\detect.py", line 114, in run
    for path, im, im0s, vid_cap, s in dataset:
  File "c:\Users\Admin\Desktop\air\Tool_Object_Detection\yolov5\utils\dataloaders.py", line 406, in __next__
    if not all(x.is_alive() for x in self.threads) or cv2.waitKey(1) == ord('q'):  # q to quit
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1333: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvWaitKey'

然后我尝试了..

在cam.py文件中

import cv2
import torch
import numpy as np

model = torch.hub.load('ultralytics/yolov5','custom','odec\\best_v5s_640_500_21_9.pt')
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret,frame = cap.read()

    result = model(frame)
    cv2.imshow('YOLO',np.squeeze(result.render()))
    if cv2.waitKey(10) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

以上是我尝试过的代码

python opencv object-detection yolov5
3个回答
1
投票
pip install --upgrade pip
pip install opencv-contrib-python

0
投票

代码没有问题,问题出在包上 opencv-python==4.6.0.66, 更改功能代码有效,安装较低版本


0
投票

出现此错误是由于依赖问题。 解决方案: step1:卸载这3个库

pip 卸载 opencv-contrib-python pip 卸载 opencv-contrib-python-headless pip 卸载 opencv-python

**第2步:**安装opencv pip 安装 opencv-python

稍后谢谢我:)

© www.soinside.com 2019 - 2024. All rights reserved.