20201119【笔记】python中调用dll,但未找到的问题

在python中调用dll,但未找到,之前已经在系统环境变量path中进行配置,路径也正确仍然失败。

首先是发现缺少头文件,调用dll需要用到ctypes库,安装好库之后,还需在前面import一下。
代码如下:

import ctypes   

然后运行仍然失败,找不到dll,报错结果如下图:

在这里插入图片描述
可以看到确实是没找到dll模块,怀疑是因为路径中含有中文的原因,虽然已经是utf8,但可能存在解码的问题。

这里看了这位作者得文章:https://blog.csdn.net/fangkailove/article/details/77035303

于是,将下面这行代码:

dllpath = os.path.abspath(os.path.join(curdir,"./dllDahua/win64/cameraDahua.dll"))

改为:

dllpath = os.path.abspath(os.path.join(curdir,"./dllDahua/win64/cameraDahua.dll".decode('gbk')))

然后再次运行,上图报错消失,但这行代码产生了其他错误

在这里插入图片描述
悲伤,接着调试吧,先写到这里。

哈哈哈,问题找到了

原来是我需要加载的相机驱动文件下的python文件目录中缺少__init__.py文件。

init.py文件是非常重要的,添加了之后,瞬间找到我的相机驱动模块。关于这个文件的意义和作用,可以看看这位博主的文章:[https://blog.csdn.net/xiaocaibai/article/details/80542920?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160613539819725222464144%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160613539819725222464144&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-80542920.first_rank_ecpm_v3_pc_rank_v2&utm_term=–init–%E6%96%87%E4%BB%B6&spm=1018.2118.3001.4449]

加入__init__.py文件后,我这个文件甚至是空的,但也能使问题解决~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 OpenCV 库来调用笔记本的摄像头。 首先,你需要安装 OpenCV 库,可以使用 `pip` 命令进行安装: ``` pip install opencv-python ``` 然后,你可以使用以下代码来调用笔记本的摄像头并显示视频流: ```python import cv2 # 打开摄像头 camera = cv2.VideoCapture(0) while True: # 读取一帧图像 _, frame = camera.read() # 显示图像 cv2.imshow("Camera", frame) # 等待 1 毫秒,如果用户按下 'q' 键,则退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头资源 camera.release() # 销毁窗口 cv2.destroyAllWindows() ``` 在这段代码,`cv2.VideoCapture(0)` 将打开笔记本的第一个摄像头(通常为前置摄像头)。如果你想打开笔记本的后置摄像头,可以将参数改为 `1`。 在循环,我们使用 `cv2.VideoCapture.read()` 方法读取一帧图像,然后使用 `cv2.imshow()` 函数显示图像。使用 `cv2.waitKey(1)` 函数等待 1 毫秒,如果用户按下 'q' 键,则退出循环。最后,使用 `cv2.VideoCapture.release()` 方法释放摄像头资源,使用 `cv2.destroyAllWindows()` 函数销毁窗口 ### 回答2: 要在Python调用笔记本摄像头,可以使用OpenCV库。首先,确保已安装正确的Python版本和OpenCV库。然后,按照以下步骤进行操作: 1. 导入必要的库: ``` import cv2 ``` 2. 创建摄像头对象: ``` capture = cv2.VideoCapture(0) ``` 3. 检查摄像头是否正确打开: ``` if not capture.isOpened(): print("无法打开摄像头。请检查摄像头是否正确连接或已被其他应用程序占用。") exit() ``` 4. 循环读取帧并显示: ``` while True: # 逐帧捕捉 ret, frame = capture.read() # 如果帧读取失败,则退出循环 if not ret: print("无法获取帧。请确保摄像头是否正确连接。") break # 显示结果帧 cv2.imshow("摄像头", frame) # 按下 q 键退出循环 if cv2.waitKey(1) == ord('q'): break ``` 5. 释放对象并关闭窗口: ``` capture.release() cv2.destroyAllWindows() ``` 这样,就可以使用上述代码调用笔记本摄像头并实时显示摄像头捕捉到的帧。可以通过按下 "q" 键来关闭窗口。请注意,需要修改代码以适应不同电脑和操作系统的摄像头设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值