Adam Thole Pypotter CV2 窗口挂起

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

我正在尝试使用 python3 从我的 Windows 11 工作站部署此代码。运行代码并弹出 4 个窗口。其中一个窗口本来是用来显示实时摄像头画面的,但它死机了。通过浏览器从我的 pi zero 传送的视频看起来不错。我只是对 python 还不够精通,无法调试它。

  • 问题一:cv2显示窗口输出一直是空白

  • 问题 2: 代码在识别出我的魔杖时挂起,导致它运行 cv2.imshow() 函数,几乎立即挂起整个代码。

https://github.com/adamthole/PyPotter/blob/master/PyPotter.py

代码应该做什么! 该脚本应该运行并复制视频流的输出并删除背景。然后它只看它视野中最具反射性的点,也就是红外线棒。一旦根据先前的帧看到模式,它就会将其与本地文件/模式进行比较并触发 HA API 调用。我从来没有看到它最后跟踪魔杖运动的输出... ***我还注意到当我可以运行它时它会点击 CheckForPattern 函数然后是 cv2.imshow("Output",xx) 然后是一个窗口挂起和挂起的窗口及其处理的最后一帧。 ***

我试过什么……

为了在“原始”窗口中获得某种视频输出,我执行以下操作: -更正了类型错误

    for track in wandTracks:
        x1 = prevTrack[0]
        x1 = int(x1)
        x2 = track[0]
        x2 = int(x2)
        y1 = prevTrack[1]
        y1 = int(y1)
        y2 = track[1]
        y2 = int(y2)

禁用大多数窗口。 (如果我禁用 showbackground,我会得到更多的 fps。

 if IsShowOutputWindows:
       IsShowOriginal = True
       IsShowBackgroundRemoved = True
       IsShowThreshold = False
       IsShowOutput = False

  • 将参数设置为 False True False False 运行 python
  • 视频将运行并在原始窗口中显示输出。 后台窗口永远不见天日。 输出窗口(如果启用)始终为空白(无响应) 除了显示当前提要的最后一帧的原始窗口外,所有窗口始终为空白。

看来这部分代码挂了。就像它试图将内容应用到输出屏幕,但它全为零并崩溃。

 if wand_path_frame is not None:
        if (IsShowOutput):
            x = outputCps.countsPerSec()
            wandPathFrameWithText = AddIterationsPerSecText(wand_path_frame,outputCps.countsPerSec())
            
            cv2.putText(wandPathFrameWithText, "Last Spell: " + LastSpell, (10, 400),  cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 255, 255))
            print("AddIterationsPersec",wand_path_frame, x, LastSpell)
            cv2.imshow("Output", wandPathFrameWithText)
            print("after imshow",wandPathFrameWithText)


  • 打印语句的输出
      CheckForPattern(
      [331.77042, 412.87335]
      AddIterationsPersec [[0 0 0 ... 0 0 0]
       [0 0 0 ... 0 0 0]
       [0 0 0 ... 0 0 0]
       ...
       [0 0 0 ... 0 0 0]
       [0 0 0 ... 0 0 0]
       [0 0 0 ... 0 0 0]] 0 None

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