【发布时间】:2022-05-15 14:05:50
【问题描述】:
根据 youtube 手部跟踪教程编写了此代码:
import cv2
import mediapipe as mp
import time
cap = cv2.VideoCapture(1)
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils
pTime = 0
cTime = 0
while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = hands.process(imgRGB)
# print(results.multi_hand_landmarks)
if results.multi_hand_landmarks:
for handLms in results.multi_hand_landmarks:
for id, lm in enumerate(handLms.landmark):
# print(id, lm)
h, w, c = img.shape
cx, cy = int(lm.x * w), int(lm.y * h)
print(id, cx, cy)
# if id == 4:
cv2.circle(img, (cx, cy), 15, (255, 0, 255), cv2.FILLED)
mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3,
(255, 0, 255), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)
当我运行此代码时,我收到以下错误消息:
C:\Users\gouri\PycharmProjects\opencv2\venv\Scripts\python.exe C:/Users/gouri/PycharmProjects/opencv2/main.py
[ WARN:0] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback
Traceback (most recent call last):
File "C:/Users/gouri/PycharmProjects/opencv2/main.py", line 16, in <module>
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
是的,我已经正确安装了所有软件包,并且我的 python 版本是最新的。
【问题讨论】:
-
图片可能加载不正确。在我通常的情况下,是相机连接失败。也许你可以检查一下。
-
是的,断言错误看起来像您的 img 中没有数据,或者没有数据,只需调试您在 img 变量中得到的内容。