精华内容
下载资源
问答
  • 学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了...引入库支持import cv2初始化初始化的时候,参数可以是整数,也可以是外部的视频文件的名称。这里需要强调的是整数类型。通常来...

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB。经过一番查找,终于找到了解决办法。

    调用摄像头

    调用摄像头作为本实验的基础是必不可少的,因为我们很有可能在初始化的这一步出错,而导致整个视频录制的失败。

    引入库支持

    import cv2

    初始化

    初始化的时候,参数可以是整数,也可以是外部的视频文件的名称。这里需要强调的是整数类型。

    通常来说,笔记本电脑内置了一个摄像头,我们用0代表,其余的外接摄像头我们可以按照具体的情况来使用1,2,3··· ··· 来进行调用和数据的采集。

    cap = cv2.VideoCapture(0)

    有的时候,我们初始化完成了,但是并不知道到底成功了没有,这时,我们可以调用cap.isOpened()方法来侦测。

    调整界面大小

    默认的窗体界面是640X480的,但是我们却也可以修改,有固定方式和可任意调节方式。

    固定大小方式:

    cap = cv2.VideoCapture(0)

    # cap.set(3,1080)

    # cap.set(4,720)

    窗口可任意调节方式:

    cv2.namedWindow(cv2.WINDOW_NORMAL)

    实时显示

    实时显示就是将OpenCV采集到的一帧一帧的数据实时的显示到界面窗体上。

    import cv2

    # 初始化摄像头

    cap = cv2.VideoCapture(0)

    while cap.isOpened():

    # 采集一帧一帧的图像数据

    isSuccess,frame = cap.read()

    # 实时的将采集到的数据显示到界面上

    if isSuccess:

    cv2.imshow("My Capture",frame)

    # 实现按下“q”键退出程序

    if cv2.waitKey(1)&0xFF == ord('q'):

    break

    # 释放摄像头资源

    cap.release()

    cv2.destoryAllWindows()

    如此,便可以实时的获取到摄像头采集到的数据了。

    录制视频并保存

    学会了如何采集数据,下一步就是将采集到的数据写入到一个视频文件中。这就涉及到了编码的问题了,因为将图片写到视频文件中需要实时的压缩,处理。所以我们的电脑上要装有相应的码库。

    fourcc问题解决

    一开始我是用的fourcc是:

    fourcc = cv2.VideoWriter_fourcc(*"XVID")

    但是总是不能正确的录制出视频文件,显示大小为0KB。最后发现是电脑上没有响应的视频解码库导致的。

    解决办法:

    一开始按照网上的参考资料,说是将out的第二个参数写为-1,这样运行的时候会弹出系统拥有的压缩方式,即可解决。但是在博主亲试之下,完美的失败了。 :(

    第二种方式,博主亲测有效,改变了fourcc的类型。

    fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")

    代码实现

    下面看一个完整的录制视频的小例子。

    # coding:utf-8

    import sys

    reload(sys)

    sys.setdefaultencoding('utf8')

    # __author__ = '郭 璞'

    # __date__ = '2016/9/7'

    # __Desc__ = 使用Python借助opencv实现对图像的读取,写入

    import cv2

    import numpy as np

    # 选取摄像头,0为笔记本内置的摄像头,1,2···为外接的摄像头

    cap = cv2.VideoCapture(0)

    # cap.set(3,1080)

    # cap.set(4,720)

    # 为保存视频做准备

    fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")

    # 第三个参数则是镜头快慢的,20为正常,小于二十为慢镜头

    out = cv2.VideoWriter('output2.avi', fourcc,3.0,(640,480))

    while True:

    # 一帧一帧的获取图像

    ret,frame = cap.read()

    if ret == True:

    frame = cv2.flip(frame, 1)

    # 在帧上进行操作

    # gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    # 开始保存视频

    out.write(frame)

    # 显示结果帧

    cv2.imshow("frame", frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):

    break

    else:

    break

    # 释放摄像头资源

    cap.release()

    out.release()

    cv2.destroyAllWindows()

    效果展示

    L3Byb3h5L2h0dHAvaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNjA5MDcyMDIwMzU1MTE=.jpg

    亲测有效!

    总结

    本次试验收获有:

    如何使用OpenCV配合Python实时捕获摄像头数据

    windows下录制视频文件大小为零的异常

    修改图像显示窗体大小的两种方式

    录制视频的过程中,输出为快慢镜头的调节方式

    展开全文
  • OpenCV Python 录制视频

    千次阅读 2018-11-10 08:27:48
    OpenCV Python 录制视频

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                           

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB。经过一番查找,终于找到了解决办法。


    调用摄像头

    调用摄像头作为本实验的基础是必不可少的,因为我们很有可能在初始化的这一步出错,而导致整个视频录制的失败。

    引入库支持

    import cv2
      
    • 1

    初始化

    初始化的时候,参数可以是整数,也可以是外部的视频文件的名称。这里需要强调的是整数类型。

    通常来说,笔记本电脑内置了一个摄像头,我们用0代表,其余的外接摄像头我们可以按照具体的情况来使用1,2,3··· ··· 来进行调用和数据的采集。

    cap = cv2.VideoCapture(0)
      
    • 1

    有的时候,我们初始化完成了,但是并不知道到底成功了没有,这时,我们可以调用cap.isOpened()方法来侦测。

    调整界面大小

    默认的窗体界面是640X480的,但是我们却也可以修改,有固定方式和可任意调节方式。

    • 固定大小方式:
    cap = cv2.VideoCapture(0)# cap.set(3,1080)# cap.set(4,720)
      
    • 1
    • 2
    • 3
    • 4
    • 窗口可任意调节方式:
    cv2.namedWindow(cv2.WINDOW_NORMAL)
      
    • 1

    实时显示

    实时显示就是将OpenCV采集到的一帧一帧的数据实时的显示到界面窗体上。

    import cv2# 初始化摄像头cap = cv2.VideoCapture(0)while cap.isOpened():    # 采集一帧一帧的图像数据    isSuccess,frame = cap.read()    # 实时的将采集到的数据显示到界面上    if isSuccess:        cv2.imshow("My Capture",frame)    # 实现按下“q”键退出程序    if cv2.waitKey(1)&0xFF == ord('q'):        break# 释放摄像头资源cap.release()cv2.destoryAllWindows()
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    如此,便可以实时的获取到摄像头采集到的数据了。

    录制视频并保存

    学会了如何采集数据,下一步就是将采集到的数据写入到一个视频文件中。这就涉及到了编码的问题了,因为将图片写到视频文件中需要实时的压缩,处理。所以我们的电脑上要装有相应的码库。

    fourcc问题解决

    一开始我是用的fourcc是:

    fourcc = cv2.VideoWriter_fourcc(*"XVID")
      
    • 1

    但是总是不能正确的录制出视频文件,显示大小为0KB。最后发现是电脑上没有响应的视频解码库导致的。

    解决办法:

    • 一开始按照网上的参考资料,说是将out的第二个参数写为-1,这样运行的时候会弹出系统拥有的压缩方式,即可解决。但是在博主亲试之下,完美的失败了。 :(
    • 第二种方式,博主亲测有效,改变了fourcc的类型。
    fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")
      
    • 1

    代码实现

    下面看一个完整的录制视频的小例子。

    # coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')#    __author__ = '郭 璞'#    __date__ = '2016/9/7'#    __Desc__ = 使用Python借助opencv实现对图像的读取,写入import cv2import numpy as np# 选取摄像头,0为笔记本内置的摄像头,1,2···为外接的摄像头cap = cv2.VideoCapture(0)# cap.set(3,1080)# cap.set(4,720)# 为保存视频做准备fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")# 第三个参数则是镜头快慢的,20为正常,小于二十为慢镜头out = cv2.VideoWriter('output2.avi', fourcc,3.0,(640,480))while True:    # 一帧一帧的获取图像    ret,frame = cap.read()    if ret == True:        frame = cv2.flip(frame, 1)        # 在帧上进行操作        # gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)        # 开始保存视频        out.write(frame)        # 显示结果帧        cv2.imshow("frame", frame)        if cv2.waitKey(1) & 0xFF == ord('q'):            break    else:        break# 释放摄像头资源cap.release()out.release()cv2.destroyAllWindows()
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    效果展示

    录制结果

    亲测有效!

    总结

    本次试验收获有:

    • 如何使用OpenCV配合Python实时捕获摄像头数据
    • windows下录制视频文件大小为零的异常
    • 修改图像显示窗体大小的两种方式
    • 录制视频的过程中,输出为快慢镜头的调节方式
               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • opencv python 对指针仪表读数识别

    千次阅读 多人点赞 2021-01-13 18:57:38
    opencv python 对指针仪表读数识别我尝试了两种方式第一种方式:模板匹配,然后边缘检测 + 霍夫直线需要完整代码留下邮箱 我尝试了两种方式 用opencv 对指针仪表进行读数识别, **1. 先模板匹配,然后边缘检测 + ...

    我尝试了两种方式

    用opencv 对指针仪表进行读数识别,

    1. 先模板匹配,然后边缘检测 + 霍夫直线

    在这里插入图片描述
    2. 按轮廓大小过滤,然后边缘检测 + 霍夫直线在这里插入图片描述

    两种方式对光线都非常敏感
    其中第一种的应用范围更广,背景复杂一点也能识别到
    个人比较喜欢这种方式

    第二种的限制多一点,对背景、光线条件要求比较高
    对于固定位置,且明暗变化不大的情况下,这种方式还是很有效的

    先说第一个方案,第二个方式就不说了

    第一种方式:模板匹配,然后边缘检测 + 霍夫直线

    if __name__ == "__main__":
        # 加载模板
        template = cv2.imread('./data/001.jpg',1)
        # 初始化
        am = C_ammerter(template)
        # 运行
        am.am_run()
        # 结束
        am.close()
    

    模板图 001.jpg
    在这里插入图片描述

    下面给出def am_run(self)函数的处理流程 (整体比较乱~~~需要完整代码留下地址)

    摄像头抓取图像
    模板图做匹配得到匹配的图像位置
    用上一步的位置数据把匹配的部分截取下来
    截取后霍夫直线
    得到直线角度参数并在原图中画出

    其中边缘检测之前需要对图像做一些处理:

    高斯除噪
    灰度图 二值化
    边缘检测
    霍夫直线
        def am_run(self):
            while True:
                ret, frame = self.cap.read()
                if frame is None:
                    print('video picture is none  --continue ')
                    continue
    
                gray = frame.copy()
                # cv2.imshow('origin', gray)
    
                # 匹配模板 框出匹配区域
                image = gray.copy()
                maxval,t_left, b_right = self.get_match(gray)
                if maxval < 16000000000:  # 对匹配程度做判断
                    print("---------------------------------------")
                    print('matchTemplate is not enough  --continue')
                    print("---------------------------------------")
                    result =frame
                    image=frame
                else:
    
                    cv2.rectangle(image, t_left, b_right, 255, 2)
    
    
    
                    # 高斯除噪
                    kernel = np.ones((6,6), np.float32) / 36
                    gray_cut_filter2D = cv2.filter2D(image[t_left[1]:t_left[1] +  self.h, t_left[0]:t_left[0] +  self.w], -1, kernel)
    
                    # 灰度图 二值化
                    gray_img = cv2.cvtColor(gray_cut_filter2D, cv2.COLOR_BGR2GRAY)
                    ret, thresh1 = cv2.threshold(gray_img, 180, 255, cv2.THRESH_BINARY)
    
                    # 二值化后 分割主要区域 减小干扰 模板图尺寸371*369
                    tm = thresh1.copy()
                    test_main = tm[50:319, 50:321]
    
                    # 边缘化检测
                    edges = cv2.Canny(test_main, 50, 150, apertureSize=3)
    
                    # 霍夫直线
                    lines = cv2.HoughLines(edges, 1, np.pi / 180, 60)
                    if lines is None:
                        continue
                    result = edges.copy()
    
                    for line in lines[0]:
                        rho = line[0]  # 第一个元素是距离rho
                        theta = line[1]  # 第二个元素是角度theta
                        print('distance:' + str(rho), 'theta:' + str(((theta / np.pi) * 180)))
                        lbael_text = 'distance:' + str(round(rho))+  'theta:' + str(round((theta / np.pi) * 180-90,2))
                        cv2.putText(image, lbael_text,(t_left[0],t_left[1]-12),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)
                        if (theta > 3 * (np.pi / 3)) or (theta < (np.pi / 2)):  # 从图像边界画出延长直线
                            # 该直线与第一行的交点
                            pt1 = (int(rho / np.cos(theta)), 0)
                            # 该直线与最后一行的焦点
                            pt2 = (int((rho - result.shape[0] * np.sin(theta)) / np.cos(theta)), result.shape[0])
                            # 绘制一条白线
                            cv2.line(result, pt1, pt2,255, 1)
                            # print('theat >180 theta<90')
    
                        else:  # 水平直线
                            # 该直线与第一列的交点
                            pt1 = (0, int(rho / np.sin(theta)))
                            # 该直线与最后一列的交点
                            pt2 = (result.shape[1], int((rho - result.shape[1] * np.cos(theta)) / np.sin(theta)))
                            # 绘制一条直线
                            cv2.line(result, pt1, pt2, 255, 1)   
    
                cv2.imshow('result', result)
                cv2.imshow('rectangle', image)
                if cv2.waitKey(1) & 0XFF == ord('q'):
                    break
    
    
    

    源码:https://gitee.com/laomaogu/py_opencv_meter.git.

    展开全文
  • OpenCV python 摄像头视频读取 import cv2 ...初始化视频采集 cap = cv2.VideoCapture(0) # 2.循环读取图片 while cap.isOpened(): ret, frame = cap.read() cv2.imshow("frame", fram...

    OpenCV python 摄像头视频读取

    import cv2
    
    
    def main():
        # 1.初始化视频采集
        cap = cv2.VideoCapture(0)
    
        # 2.循环读取图片
        while cap.isOpened():
    
            ret, frame = cap.read()
            cv2.imshow("frame", frame)
    
            key = cv2.waitKey(1)
            if key == 27: # esc 按键
                break
    
        # 3.资源释放
        cap.release()
        cv2.destroyAllWindows()
    
    
    if __name__ == '__main__':
        main()
    
    

    视频读取
    在这里插入图片描述

    展开全文
  • opencv python 常用方法

    千次阅读 多人点赞 2020-09-11 16:42:35
    点击:OpenCV--Python 基本使用 一、基本方法 1、cv2.imread() 读入图像;第一个参数为图像路径;第二个为cv2.IMREAD_COLOR:读入彩色图像;cv2.IMREAD_GRAYSCALE:读入灰度图像。 import cv2 import matplotlib....
  • 前言opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍视频的获取和保存,坚持学习,共同进步。系统环境系统:win_x64;python版本:python3.5.2;opencv版本:opencv3.3.1;内容安排1.知识点...
  • openCVPython(1)——初始化环境 本系列博客主要參考自——Adrian Rosebrock:《Practical Python and OpenCV: An Introductory,Example Driven Guide toImage Processing and Computer Vision》 ...
  • Opencv Python API 基本数据结构 本例使用python3.7 opencv环境配置方法: pip install numpy matplotlib pip install opencv-python 下载anacoda 只需在anacoda prompt中 执行此句 1、构造 ndarray 对象 构造二维 ...
  • 初始化图像&初始化结构体&运行时间统计等基本知识点。 import cv2 import numpy as np def access_pixel(img): #像素访问 print(img.shape) height = img.shape[0] width = img.shape[1] channels = img...
  • opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的...
  • opencv Python 汽车检测

    千次阅读 2017-12-28 10:30:38
    本代码实现环境为opencv3.2.0,Python2.7,实现功能是汽车检测,主要用到SVM和BOW构建分类器。  BOW又名词袋,最开始出现是用来解决文档分类,在一系列文档中计算每个词出现的次数,用这些词构成的向量重新表示文档...
  • OpenCV PythonOpenCV的基本视频操作

    千次阅读 2018-06-14 00:28:00
    初始化摄像头:Cv2.VideoCapture("摄像头ID号")摄像头ID号: 默认为0查看初始化是否成功:Cap.isopen()此函数会返回一个bool值,如果为true则成功帧捕捉:Ret,frame=cap.read()cap为捕捉到的帧对象ret是一...
  • 利用opencv实现车牌的字符分割 原图 运行结果如下 灰度 反色 二值处理 水平投影 垂直投影 字符分割 实现代码 import cv2 import numpy as np img=cv2.imread('E:\\123456.jpg') ...
  • opencv python基本操作

    2017-03-04 18:54:00
    Python usage crop frame: croppedframe = frame[ymin:ymax, xmin:xmax] resize frame: reszframe = cv2.resize(frame, (size, size)) ...初始化 vid = cv2.VideoCapture(videoname) 读取方式: vid.set(read_mod...
  • OpenCV python 播放视频文件(.avi)

    千次阅读 2020-01-31 12:17:25
    OpenCV python 播放视频文件(.avi) 同文件夹存放文件[test.avi] ...初始化读取视频对象 cap = cv2.VideoCapture("test.avi") # 2.循环读取图片 while cap.isOpened(): ret, frame = cap.read...
  • OpenCV python 处理视频文件(.avi) 同文件夹存放文件[test.avi] ...初始化读取视频对象 cap = cv2.VideoCapture("test.avi") # 2.循环读取图片 while cap.isOpened(): ret, frame = cap.read...
  • python opencv 二值 计算白色像素点的实例贴部分代码#! /usr/bin/env python# -*- coding: utf-8 -*-import cv2import numpy as npfrom PIL import Imagearea = 0def ostu(img):global area image=cv2.cvtColor...
  • 默认情况下,初始颜色将设置为黑色。 代码 : import numpy as np import cv2 def nothing(x): pass#在我们的例子中,函数什么都不做,所以我们简单地通过。 # Create a black image, a window img = np....
  • Declare or initialize the path: 声明或初始化路径: A tesseract is an open-source tool it can be downloaded from online. After downloading mention its path like below. tesseract是一种开源工具,可以从...
  • 基于pythonopencv实现信用卡数字识别 本项目和源码来源于唐宇迪opencv项目实战 1.准备工作 python3.5 opencv4.2 同一字体,相似类型的信用卡图片 字体模板图片 2.本项目总体可分为两部分: 对模板图像的处理 对...
  • 记一篇python-opencv 完成答题卡识别 项目的学习笔记 输入一张特定格式的答题卡图片(答题卡中题目数量和选项个数是固定的),能够输出此答题卡中答案的准确率。运行效果如下: 输入一张答题卡图片 输出结果 对于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,272
精华内容 4,108
关键字:

opencvpython初始化

python 订阅