解决OpenCV读取视频结束后报错的问题

最近由于项目的需要,经常需要使用opencv读视频操作,会经常遇到一个问题,就是视频读完之后会出现报错的情况,虽然不影响代码结果,但是对于吹毛求疵的我实在忍受不了。会报错的程序:# -*-coding:utf-8-*-"""File Name: read_video.pyProgram IDE: PyCharmCreate File By Author: Hong"""import cv2def read_video(video_path: str): """ O
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python图像颜色空间转换和图像的创建

图像颜色空间转换在使用OpenCV读去图像文件时,我们得到的图像通道顺序是BGR,每个通道的数值是0~255之间。由于对图像操作的需要,我们会将图像进行颜色空间转换处理,通常是将图像从RGB颜色空间转换到其他颜色空间,比如HSV颜色空间。这个过程需要用到两个opencv函数。图像读取函数cv2.imread()这个函数有两个参数,第一个是图像文件名,即输入图像的文件所在路径和名称;第二个参数是flag,指定读取图像文件的类型,常见的三种读取图像类型的标志为:(1) cv2.IMREAD_COLO
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python对图像像素进行操作

遍历并修改图像像素值在使用opencv处理图像时,有时需要对图像的每个像素点进行处理,比如取反、修改值等操作,就需要通过h和w遍历像素。依然以下图为例:具体代码:import cv2 as cvimport numpy as npdef image_pixel(image_path: str): img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) h, w, c = img.sh
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python滚动条函数cv2.createTrackerbar()的使用

使用cv2.createTrackerbar()动态改变图像亮度在使用opencv读取图像时,我们有时需要动态的改变图像的亮度,这就需要用到opencv自带的滚动滑块函数cv2.createTrackerbar()。通过官方文档可知该函数有5个参数:trackbarName:滚动滑块的名称;windowName:添加滚动滑块窗口的名称;value:滑块的初始位置;count:滑块可以移动的最大值;onChange:指向每次滑块更改位置时要调用的函数的指针,有默认值0。此函数的原型应为void
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python图像颜色变换

给图像添加颜色在使用OpenCV操作图像时,有时候需要给图像添加不同的颜色,以达到不同的风格效果。这里介绍的主要是opencv中的cv.applyColorMap()函数。给图像应用颜色函数cv.applyColorMap(src, colormap, dst=None)src:表示传入的原图;colormap:颜色图类型(17种)。可以单独使用,也可以以一个列表的形式批量使用。以下图举例实现:直接上代码:# -*-coding:utf-8-*-"""File Name: color
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python在一个窗口中显示多幅图像

在使用opencv显示图像时,有时候需要显示多张图像,就会出现多个窗口,显得冗余,用户不好操作。这时候就想着能不能将这些图像在一个窗口中显示。方法1:创建画布,将所有图像复制到画布中,最后显示画布 # 方法1:创建一个画布,将所有图像复制到画布中,最后显示画布 h, w, _ = img.shape img_list = [img, invert, gaussianBlur, flip] # 图像列表 four_view = np.zeros((h * 2 + 10, w
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python实现绿幕图像抠图

在进行图像处理的时候,有时需要将图像中的物体抠图出来,传统的做法可以使用PS、Excel等方法做。今天我们使用opencv代码的方式实现图像抠图。用到的函数主要有:cv.inRange(src, lowerb, upperb),cv.bitwise_not(),cv.bitwise_and()。cv.inRange(src, lowerb, upperb):函数的功能是根据像素的范围进行过滤,把符合像素范围的保留,赋值0,黑色;不符合的赋值255,白色。src:需要处理的图像lowerb:最小像数
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

Opencv-Python图像像素均值、方差,绘制几何形状

图像像素均值、方差计算数组元素的均值和方差函数cv.meanStdDev()。传入数组数据,返回数组数据的均值和方差。在图像数组中,可以计算出图像数组的像素均值和方差。使用np.min和np.max可以计算数组元素的最小值和最大值。在图像数组中,可以计算每个通道像素最小值和最大值。以下面图像为例,计算该图像的像素均值和方差,以及每个通道的像素最小值和最大值。# -*-coding:utf-8-*-"""File Name: image_shape_painting.pyProgram IDE
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python绘制多边形和选择随机颜色

绘制多边形在使用 opencv 绘制几何图像时,除了大多数情况下绘制的简单形状,有时也需要绘制复杂的多边形形状。下面就来一起尝试如何绘制多边形形状。首先需要了解几个 opencv 库函数。cv.polylines()多边形绘制需要传入画布、轮廓点、是否闭合、绘制颜色、线条粗细、线条类型、顶点坐标小数位。cv.fillPoly()多边形填充需要传入画布、轮廓点、填充颜色、线条类型、顶点坐标小数位。drawContours()既可以填充也可以绘制多边形需要传入画布(三通道画布才能显示
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python鼠标绘制矩形框和像素归一化

鼠标绘制矩形框之前有说到使用opencv绘制几何图形,但那些都是固定地给出坐标绘制固定位置的形状。有时需要鼠标在任何位置绘制几何形状,下面就来看看如何使用鼠标响应函数在图像的不同位置绘制几何形状。首先需要了解的是鼠标响应函数cv.setMouseCallback(windowName, onMouse, param=None)windowName: 窗口的名字;onMouse: 鼠标响应函数,回调函数;param: 传给回调函数的参数。最重要的是第2个参数,所有操作都是鼠标回调函数完成,例如
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python图像的缩放、翻转和旋转

图像的缩放opencv中对图像进行放缩有两种方式可以实现,一种是使用指定尺寸放缩;一种是使用缩放比例放缩。指定尺寸cv2.resize(image, (1920, 1080),直接指定放缩后的尺寸大小。缩放比例cv2.resize(image, (0,0), fx=2.0, fy=2.0,使用放缩比例放缩图片。此外,根据resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)函数的参数可知,还可以选择插值函数
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python图像像素直方图

图像直方图是反映一个图像像素分布的统计表,其横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,那么反映像素分布的直方图往往可以作为图像一个很重要的特征。直方图的显示方式是左暗又亮,左边用于描述图像的暗度,像素值比较小;右边用于描述图像的亮度,像素值比较大。按照维数去分类可以分为一维直方图和二维直方图。一维直方图python中绘制图像像素一维直方图(也成为单通道像素直方图)有两种方式,一种是opencv中的
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python图像模糊处理

其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作。那么它是什么操作呢?它就是图像的模糊(滤波)处理。均值滤波使用 opencv 中的cv2.blur(src, ksize)函数。其参数说明是:src: 原图像ksize: 模糊核大小原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3 标准化的盒式过滤器如下所示:特征:核中区域贡献率相同。作用:对于椒盐噪声的滤除效果比较好。# -*-coding:utf-8-*-"""File N
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python也能实现人脸检测了

opencv中也可以实现深度学习中的人脸识别算法了。是怎么一回事呢?就是opencv中的DNN库,更新了好多深度学习的模块或者说是库函数,这样就让我们摆脱了安装庞大繁琐的深度学习框架。我们只需下载相应的权重文件,就可以实现复杂的人脸识别和人脸检测功能了。人脸检测1、下载权重文件和配置文件2、话不多说,直接上代码# -*-coding:utf-8-*-"""File Name: face_detection.pyProgram IDE: PyCharmDate: 2021/10/17Cre
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

OpenCV-Python入门实战13例

本文是对前面有关OpenCV-Python实战小工具的总结,汇总所有实战小项目,便于后期系统学习和回顾。1、图像的创建和颜色空间转换2、图像的加减乘除运算3、动态调整图像亮度和对比度4、图像添加颜色、与或非和通道运算5、一个窗口显示多张图像6、绿幕图像抠图7、图像几何形状绘制8、多边形绘制和随机颜色生成9、鼠标绘制矩形框10、图像的缩放、翻转、旋转11、图像像素直方图和均衡化12、图像模糊处理13、人脸检测关于所有小项目的完整代码,请关
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

生成GitHub项目目录的树形结构图

之前在GitHub中看别人项目的README文档时,总是发现其中会有整个项目的目录结构图,当时还想着是什么工具或者命令快捷生成的,这几天由于整理大批量的文件夹,想看清文件夹下到底有什么文件或者目录,不想一个个的打开看,想直观的看到这个数据收集文件夹下所有子文件夹内的文件情况。尝试了 Windows 的预览窗格,发现只能预览文件,不能预览文件夹,通过搜索发现可以通过在目标文件夹根目录下执行 tree/F > tree.txt 命令将根目录的文件夹结构输出到文件中,这样对根目录下的文件结构就清晰了,达到
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

Latex学习:Texlive2021和Texstudio的安装及使用

引入最近一段时间由于各种琐碎之事的打扰,或许是很忙吧,忙于干论文,忙于找期刊,忙于…干这,干那。又或许是没有创作思路或灵感了…导致将近半个月没有更新了,在思考做什么方面的内容,或许期待和哪位大神合作一下。嗯,总之最近脑子一团糟。近期由于论文投稿的需要,要用到Latex编辑器编写文档,简直恶心,看着命令就很让人劝退,但是期刊要求亚,只能硬着头皮学习了。那最近一段时间就和大家一起学习一个Latex编辑器的使用。经过师兄的推荐,我决定使用Texlive和TeX studio编写Latex文档,本期我们将一
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

Latex学习:命令的简单实习

引入上期安装了Texlive和TexStudio,本期就可以愉快的入手Latex了。刚开始的一天入手是,简直是难熬,这都是什么命令,怎么运行都不知道,差点就劝退我了,要不是论文需要绝对不会搞它,新手入手实在太难了。好不容要搞了两天,有了感觉。最后发现这个TexStudio编译有问题,参考文献的编译老是出现问题,导致参考文献显示不出来。简直折磨…在网上找了好多资料,依然没有解决…但是新的方法出现了,投稿指南里面发现了在线Latex编辑器Overleaf,这个编辑器可以编译参考文献,并且正常显示。OK,
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

一文看懂什么是代理模式【没有废话,很硬】

写在前面讲真,我对设计模式其实并没有很深入的了解。这里我想把自己的理解 通过文字的方式表达出来。为啥突然想起写这个文章呢?是因为我在星球里面看见有人提问:其实,我在去年的时候也写过相关的内容,但是没有展开。这里我就一一把自己所知写出来。那么接下来就开始吧,如果有什么错误的地方,欢迎指正~我也还在不断的学习中,大家一起加油!核心:原有对象需要额外的功能,就可以使用代理这项技术代理模式两大类:静态代理透明代理动态代理基于接口的JDK动态代理基于类的CgLib动态代理01静态代理
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0

一文看懂什么是装饰器模式【没有废话,很硬】

写在前面前面提到,需要对类功能增强 ,可以使用继承,代理模式,装饰器模式,还有Scala的隐式转换技术。本篇主要介绍一下装饰器模式。那么接下来就开始吧,如果有什么错误的地方,欢迎指正~我也还在不断的学习中,大家一起加油!装饰器扩展功能就是 新增一个装饰器类。装饰器模式1.1 来一个接口:写一个程序员的接口,当然程序员嘛,本质工作当然是写代码了,所以这个接口我们可以定义一个coding的方法。public interface Programmer { void coding();}
分类: 其他 发布时间: 11-29 09:57 阅读次数: 0