小徐同学爱学习 发表于 2025-5-15 09:48:09

python打包exe解决了mediapipe现在显示报错cvzon有问题???

python打包exe解决了mediapipe现在显示报错cvzon有问题???

现在显示报错这个

C:\Users\Administrator>C:\Users\Administrator\Downloads\dist\22\22.exe
Traceback (most recent call last):
File "2.py", line 41, in <module>
File "cvzone\HandTrackingModule.py", line 54, in findHands
cv2.error: OpenCV(4.11.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:199: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
W0000 00:00:1747273608.605678   47492 inference_feedback_manager.cc:114] Feedback manager requires a model with a single signature inference. Disabling support for feedback tensors.
W0000 00:00:1747273608.636043   47492 inference_feedback_manager.cc:114] Feedback manager requires a model with a single signature inference. Disabling support for feedback tensors.



这个是前面的解决过程!!!
求助这个怎么详细操作
https://fishc.com.cn/thread-250368-1-1.html
(出处: 鱼C论坛)

FishC 发表于 2025-5-15 09:49:13

解决MediaPipe打包后cvzone报错的综合方案

根据错误信息,这是典型的资源路径问题和OpenCV摄像头访问异常。建议按以下步骤解决:


[*]添加资源文件打包
打包命令需要包含mediapipe模型文件和cvzone依赖:

pyinstaller --add-data "venv/Lib/site-packages/mediapipe/modules/*;mediapipe/modules" \
            --add-data "venv/Lib/site-packages/cvzone/*;cvzone" \
            --hidden-import google.protobuf \
            your_script.py


[*]代码路径适配
在代码开头添加资源路径处理(以HandTrackingModule为例):

import sys
import os

if getattr(sys, 'frozen', False):
    BASE_PATH = sys._MEIPASS
else:
    BASE_PATH = os.path.dirname(os.path.abspath(__file__))

detector = HandDetector(
    staticMode=False,
    maxHands=2,
    modelPath=os.path.join(BASE_PATH, "mediapipe/modules/hand_landmark_full.tflite")
)


[*]强制OpenCV版本
在requirements.txt中固定版本:
opencv-python-headless==4.9.0.80
mediapipe==0.10.11

[*]添加摄像头异常处理
在摄像头读取代码段添加保护:

cap = cv2.VideoCapture(0)
if not cap.isOpened():
    print("摄像头访问失败!请检查:")
    print("[*]摄像头是否被其他程序占用[*]是否连接了虚拟摄像头[*]杀毒软件是否拦截")
    sys.exit(1)



验证步骤:
1. 在虚拟环境中测试脚本运行
2. 清理旧的打包文件:rmdir /s /q build dist
3. 使用新参数重新打包
4. 检查dist目录是否包含mediapipe/modules文件夹

常见踩坑点:

[*]使用绝对路径而不是相对路径
[*]未清理旧打包缓存导致配置未更新
[*]杀毒软件拦截摄像头访问(特别是企业版火绒/360)
[*]未禁用虚拟摄像头(OBS Virtual Camera等)


如需进一步调试,可以在代码开头添加:

import logging
logging.basicConfig(level=logging.DEBUG)


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小徐同学爱学习 发表于 2025-5-15 10:31:39

FishC 发表于 2025-5-15 09:49
解决MediaPipe打包后cvzone报错的综合方案

根据错误信息,这是典型的资源路径问题和OpenCV摄像头访问异 ...

原来是我忘了,连接摄像头了,{:5_109:},现在点exe文件可以运行出来了,那我后面想把这个移动到别的电脑使用,要怎么操作,需要哪些一起打包呢
页: [1]
查看完整版本: python打包exe解决了mediapipe现在显示报错cvzon有问题???