Python pupil_Apriltags : DLL 路径问题 "Could not find module"

Python pupil_Apriltags : Problem with DLL path "Could not find module"

你好,我在 python 中遇到 pupil_apriltags 的问题。 我已经搜索了超过 1 周并尝试了多种解决方案,但 none 的解决方案有效。

我的问题不在于库的导入,而是在我尝试创建 检测器 时。有一个 xxxx.dll 文件的引用(我认为)不起作用。

我的代码

很简单

from pupil_apriltags import Detector
import cv2
import numpy as np


at_detector = Detector(families='tag36h11',
                       nthreads=1,
                       quad_decimate=1.0,
                       quad_sigma=0.0,
                       refine_edges=1,
                       decode_sharpening=0.25,
                       debug=0)

我的错误

Traceback (most recent call last):                                                                                  
File "detection_apriltags.py", line 6, in <module>                                                                        
at_detector = Detector()                                                                                              
File "C:\Users\Utilisateur\anaconda3\lib\site-packages\pupil_apriltags\bindings.py", line 285, in __init__
self.libc = ctypes.CDLL(str(hit))                                                                                     
File "C:\Users\Utilisateur\anaconda3\lib\ctypes\__init__.py", line 381, in __init__                                       
self._handle = _dlopen(self._name, mode)                                                                            
FileNotFoundError: Could not find module 'C:\Users\Utilisateur\anaconda3\lib\site-
packages\pupil_apriltags\lib\apriltag.dll' (or one of its dependencies). Try using the full path 
with constructor syntax.

我的配置

所以我没有找到 pupils-Apriltags 的解决方案(在 Windows 上),但我发现 Aruco 直接在 Opencv 中(包:opencv-contrib-python, 在这一天).

arucoDict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_4X4_50) 
arucoParams = cv2.aruco.DetectorParameters_create()
(corners, ids, rejected) = cv2.aruco.detectMarkers(image, arucoDict,parameters=arucoParams)

多亏了 Manuel Valenzuela 的评论,我才能够解决这个问题,并且我对 pupil-apriltags 回购进行了 PR;在此之后,问题应该不再是问题了。

https://github.com/pupil-labs/apriltags/pull/48

正如 Manuel 所说,这是 Python 3.8 及更高版本的 DLL 搜索中的一个问题。真正弄明白的人是@Mad Physicist: