![](/img/trans.png)
[英]TypeError: create_bool(): incompatible function arguments. The following argument types are supported: need someone's review
[英]Cant properly orginize self method in a class TypeError:create_bool(): incompatible function arguments. The following argument types are supported:
当我尝试生成 class 时返回错误。
当我在这里尝试时https://github.com/google/mediapipe/blob/master/docs/solutions/face_mesh.md#python-solution-api 。 一切都是完美的
自己有点问题。 方法。 但我无法理解到底在哪里
import cv2
import mediapipe as mp
import time
class FaceMeshDetector:
def __init__(self, static_mode=False, maxFaces=2, minDetectionCon=0.5, minTrackCon=0.5):
self.static_mode = static_mode
self.maxFaces = maxFaces
self.minDetectionCon = minDetectionCon
self.minTrackCon = minTrackCon
self.mpDraw = mp.solutions.drawing_utils
self.mpFaceMesh = mp.solutions.face_mesh
self.faceMesh = self.mpFaceMesh.FaceMesh(self.static_mode, self.maxFaces, self.minDetectionCon,
self.minTrackCon)
self.drawSpec = self.mpDraw.DrawingSpec(thickness=1, circle_radius=1)
def findFaceMesh(self, img, draw=True):
self.imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
self.results = self.faceMesh.process(self.imgRGB)
faces = []
if self.results.multi_face_landmarks:
for faceLms in self.results.multi_face_landmarks:
if draw:
self.mpDraw.draw_landmarks(img, faceLms, self.mpFaceMesh.FACEMESH_CONTOURS, self.drawSpec,
self.drawSpec)
face = []
for id, lm in enumerate(faceLms.landmark):
# print(lm)
ih, iw, ic = img.shape
x, y = int(lm.x * iw), int(lm.y * ih)
# cv2.putText(img, str(id), (x, y), cv2.FONT_HERSHEY_PLAIN, 0.7, (0, 255, 0), 1)
# print(id, x, y)
face.append([x, y])
faces.append(face)
return img, faces
def main():
cap = cv2.VideoCapture(0)
pTime = 0
detector = FaceMeshDetector()
while True:
success, img = cap.read()
img, faces = detector.findFaceMesh(img)
if len(faces) != 0:
print(faces[0])
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS: {int(fps)}', (20, 70), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)
if __name__ == '__main__':
main()
完整追溯
回溯(最近调用最后):文件“C:\Users\Roman\PycharmProjects\pythonProject\FaceMeshModule.py”,第 59 行,在 main() 文件“C:\Users\Roman\PycharmProjects\pythonProject\FaceMeshModule.py”中, line 44, in main detector = FaceMeshDetector() File "C:\Users\Roman\PycharmProjects\pythonProject\FaceMeshModule.py", line 16, in init self.minTrackCon) File "C:\Users\Roman\PycharmProjects\pythonProject \venv\lib\site-packages\mediapipe\python\solutions\face_mesh.py", line 107, in init outputs=['multi_face_landmarks']) File "C:\Users\Roman\PycharmProjects\pythonProject\venv\lib\ site-packages\mediapipe\python\solution_base.py",第 291 行,在名称初始化中,数据在(side_inputs 或 {}).items() 文件“C:\Users\Roman\PycharmProjects\pythonProject\venv\lib\ site-packages\mediapipe\python\solution_base.py", line 291, in for name, data in (side_inputs or {}).items() File "C:\Users\Roman\PycharmProjects\pythonProject\venv\lib\site -packages\mediapipe\python\solution_base.py",第 592 行,在make_packet retur n getattr(packet_creator, 'create ' + packet_data_type.value)(data) TypeError: create_bool(): incompatible function arguments. 支持以下参数类型:1. (arg0: bool) -> mediapipe.python._framework_bindings.packet。包
调用:0.5
你在错误的地方有一个参数。 使用命名参数或为“refine_landmarks”添加一个值。
查看 FaceMesh 的签名:
def __init__(self,
static_image_mode=False,
max_num_faces=1,
refine_landmarks=False,
min_detection_confidence=0.5,
min_tracking_confidence=0.5):
或者添加缺少的参数:
改变
self.faceMesh = self.mpFaceMesh.FaceMesh(self.static_mode, self.maxFaces, self.minDetectionCon, self.minTrackCon)
到
self.faceMesh = self.mpFaceMesh.FaceMesh(self.static_mode, self.maxFaces, False, self.minDetectionCon, self.minTrackCon)
终于完成并开始工作
def __init__(self,
static_image_mode=False,
max_num_faces=2,
refine_landmarks=False,
min_detection_confidence=0.5,
min_tracking_confidence=0.5):
self.static_mode = static_image_mode
self.maxFaces = max_num_faces
self.refine_landmarks = refine_landmarks
self.minDetectionCon = min_detection_confidence
self.minTrackCon = min_tracking_confidence
self.mpDraw = mp.solutions.drawing_utils
self.mpFaceMesh = mp.solutions.face_mesh
self.faceMesh = self.mpFaceMesh.FaceMesh(self.static_mode,
self.maxFaces,
self.refine_landmarks,
self.minDetectionCon,
self.minTrackCon)
self.drawSpec = self.mpDraw.DrawingSpec(thickness=1, circle_radius=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.