How to solve "cv2.error: OpenCV(4.5.4) :-1: error: (-5:Bad argument) in function 'imshow'"
How to solve "cv2.error: OpenCV(4.5.4) :-1: error: (-5:Bad argument) in function 'imshow'"
我正在学习如何使用 opencv,但我 运行 遇到了这个问题。
from cvzone.HandTrackingModule import HandDetector
import cv2
cap = cv2.VideoCapture("https://192.168.178.49:8080/video")
detector = HandDetector(maxHands=1, detectionCon=0.7)
while True:
success, img= cap.read()
img = detector.findHands(img)
cv2.imshow("AI", img)
cv2.waitKey(1)
导致此错误:
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Traceback (most recent call last):
File "d:\Programming\Arm Code\testhandai.py", line 13, in <module>
cv2.imshow("AI", img)
cv2.error: OpenCV(4.5.4) :-1: error: (-5:Bad argument) in function 'imshow'
> Overload resolution failed:
> - mat is not a numerical tuple
> - Expected Ptr<cv::cuda::GpuMat> for argument 'mat'
> - Expected Ptr<cv::UMat> for argument 'mat'
我使用的是 Python 3.8 64 位和所有软件包的最新版本。
谢谢。
detector.findHands(img)
的输出是一个元组。您应该将它的第二个元素作为 cv2.imshow()
:
的输入
from cvzone.HandTrackingModule import HandDetector
import cv2
cap = cv2.VideoCapture("https://192.168.178.49:8080/video")
detector = HandDetector(maxHands=1, detectionCon=0.7)
while True:
success, img= cap.read()
img = detector.findHands(img)
cv2.imshow("AI", img[1])
cv2.waitKey(1)
mediapipe 添加了一个新变量,它搞砸了手部跟踪和姿势估计调用的复杂性和 model_complexity。见下文。
现在我正在做人脸检测,这个模块工作得很好,但是当我把它拉到不同的地方时,它就失败了。
手部追踪模块
def __init__(self, mode=False, maxHands=2, complexity = 1, detectionCon=0.5, trackCon=0.5):
self.mode = mode
self.maxHands = maxHands
self.complexity = complexity
self.detectionCon = detectionCon
self.trackCon = trackCon
self.mpHands = mp.solutions.hands
self.hands = self.mpHands.Hands(self.mode, self.maxHands, self.complexity,
self.detectionCon, self.trackCon, )
对于 post 估计模块:
def __init__(self, mode = False, model_complexity = 1, smooth = True,
enable_segmentation = False, smooth_segmentation = True, min_detection_confidence = 0.5,
min_tracking_confidence = 0.5):
self.mode = mode
self.model_complexity = model_complexity
self.smooth = smooth
self.enable_segmentation = enable_segmentation
self.smooth_segmentation = smooth_segmentation
self.detectionCon = min_detection_confidence
self.trackCon = min_tracking_confidence
self.mpDraw = mp.solutions.drawing_utils
self.mpPose = mp.solutions.pose
self.pose = self.mpPose.Pose(self.mode, self.model_complexity, self.smooth, self.enable_segmentation,
self.detectionCon, self.trackCon)
我正在学习如何使用 opencv,但我 运行 遇到了这个问题。
from cvzone.HandTrackingModule import HandDetector
import cv2
cap = cv2.VideoCapture("https://192.168.178.49:8080/video")
detector = HandDetector(maxHands=1, detectionCon=0.7)
while True:
success, img= cap.read()
img = detector.findHands(img)
cv2.imshow("AI", img)
cv2.waitKey(1)
导致此错误:
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Traceback (most recent call last):
File "d:\Programming\Arm Code\testhandai.py", line 13, in <module>
cv2.imshow("AI", img)
cv2.error: OpenCV(4.5.4) :-1: error: (-5:Bad argument) in function 'imshow'
> Overload resolution failed:
> - mat is not a numerical tuple
> - Expected Ptr<cv::cuda::GpuMat> for argument 'mat'
> - Expected Ptr<cv::UMat> for argument 'mat'
我使用的是 Python 3.8 64 位和所有软件包的最新版本。 谢谢。
detector.findHands(img)
的输出是一个元组。您应该将它的第二个元素作为 cv2.imshow()
:
from cvzone.HandTrackingModule import HandDetector
import cv2
cap = cv2.VideoCapture("https://192.168.178.49:8080/video")
detector = HandDetector(maxHands=1, detectionCon=0.7)
while True:
success, img= cap.read()
img = detector.findHands(img)
cv2.imshow("AI", img[1])
cv2.waitKey(1)
mediapipe 添加了一个新变量,它搞砸了手部跟踪和姿势估计调用的复杂性和 model_complexity。见下文。
现在我正在做人脸检测,这个模块工作得很好,但是当我把它拉到不同的地方时,它就失败了。
手部追踪模块
def __init__(self, mode=False, maxHands=2, complexity = 1, detectionCon=0.5, trackCon=0.5):
self.mode = mode
self.maxHands = maxHands
self.complexity = complexity
self.detectionCon = detectionCon
self.trackCon = trackCon
self.mpHands = mp.solutions.hands
self.hands = self.mpHands.Hands(self.mode, self.maxHands, self.complexity,
self.detectionCon, self.trackCon, )
对于 post 估计模块:
def __init__(self, mode = False, model_complexity = 1, smooth = True,
enable_segmentation = False, smooth_segmentation = True, min_detection_confidence = 0.5,
min_tracking_confidence = 0.5):
self.mode = mode
self.model_complexity = model_complexity
self.smooth = smooth
self.enable_segmentation = enable_segmentation
self.smooth_segmentation = smooth_segmentation
self.detectionCon = min_detection_confidence
self.trackCon = min_tracking_confidence
self.mpDraw = mp.solutions.drawing_utils
self.mpPose = mp.solutions.pose
self.pose = self.mpPose.Pose(self.mode, self.model_complexity, self.smooth, self.enable_segmentation,
self.detectionCon, self.trackCon)