win10 x64 python3的cv2调用摄像头

本文详细介绍了如何在Anaconda环境下正确安装并使用OpenCV库,解决Python环境中常见导入错误,包括在PyCharm中无法识别已安装的OpenCV包的问题。文章提供了具体的代码示例,演示如何使用OpenCV进行拍照和录像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果是 python2的话,直接下载 pip install cv2

如果有 anaconda的话下载包就好冲突,anaconda 自带了很多包,在下载就是 已经存在,但又导不进

我的就是这样,我安装了 anaconda python3的,

Python3 有些不一样,开始也很奇怪,明明下载成功了,就是看不到包,

Windows+R cmd 打开python,import cv2 可以,但是在 pycharm 就是不可以

看到这位博客  https://blog.csdn.net/Yeah_snow/article/details/79438097,

 通过 anaconda 的环境,

# -*- coding:utf8 -*-
import cv2


def make_photo():
    """使用opencv拍照"""
    cap = cv2.VideoCapture(0)  # 默认的摄像头
    while True:
        ret, frame = cap.read()
        if ret:
            cv2.imshow("capture", frame)  # 弹窗口
            # 等待按键q操作关闭摄像头
            if cv2.waitKey(1) & 0xFF == ord('q'):
                file_name = "my.jpg"
                cv2.imwrite(file_name, frame)
                break
        else:
            break

    cap.release()
    cv2.destroyAllWindows()


def make_video():
    """使用opencv录像"""
    cap = cv2.VideoCapture(0)  # 默认的摄像头
    # 指定视频代码
    fourcc = cv2.VideoWriter_fourcc(*"DIVX")
    out = cv2.VideoWriter('myvideo.avi', fourcc, 20.0, (640, 480))
    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret:
            out.write(frame)
            #
            cv2.imshow('frame', frame)
            # 等待按键q操作关闭摄像头
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        else:
            break
    cap.release()
    out.release()
    cv2.destroyAllWindows()


if __name__ == '__main__':
    make_video()

### Python 调用 Windows DLL 实现摄像头访问 为了实现Python程序调用Windows系统的摄像头,通常有两种主要方法:一种是直接利用OpenCV简化操作;另一种则是更底层的方式——通过`ctypes`模块加载并调用操作系统提供的动态链接(DLL),比如Win32 API中的函数。 对于后者而言,具体实践可以参照如下代码片段: ```python from ctypes import windll, byref, c_int, POINTER, Structure import numpy as np import cv2 class CAPTUREPARAMS(Structure): _fields_ = [("dwRequestMicroseconds", c_int)] cap_params = CAPTUREPARAMS() cap_params.dwRequestMicroseconds = 0xFFFFFFFF # 加载windows dll文件 avicap32 = windll.LoadLibrary('avicap32.dll') # 定义一些必要的回调函数和其他辅助变量... hwnd = avicap32.capCreateCaptureWindowA(None, 0, 0, 0, 640, 480, None) if hwnd != 0: # 设置捕获参数 avicap32.capSetCallbackOnFrame(hwnd, lambda a: ...) # 开始视频流捕捉 avicap32 capStartStreaming(hwnd) else: print("Failed to create capture window.") while True: try: bitmap_ptr = POINTER(c_int)() # 假设图像数据存储在此指针指向的置 if avicap32.capGetStillImage(hwnd, byref(bitmap_ptr)): img_array = np.ctypeslib.as_array(bitmap_ptr.contents, shape=(480, 640)) # 显示获取到的画面帧 cv2.imshow('Video Stream', img_array) key = cv2.waitKey(1) if key & 0xFF == ord('q'): break except Exception as e: print(f"Error occurred during video stream processing {e}") finally: # 清理资源 avicap32.capStopStreaming(hwnd) cv2.destroyAllWindows() ``` 上述代码展示了如何借助于`windll.LoadLibrary()`从Python环境中加载特定的DLL(`avicap32.dll`),并通过定义结构体以及设置相应的窗口句柄来初始化视频采集环境。需要注意的是,在实际应用过程中可能还需要处理更多细节问题,如错误检测、性能优化等[^1]。 然而,考虑到复杂性和维护成本,推荐优先考虑采用更高层次封装好的工具包来进行此类开发工作,例如OpenCV,它不仅提供了简单易用接口用于快速搭建原型系统,而且拥有庞大的社区支持和丰富的文档资料可供查阅[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.含笑.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值