opencv
youandme520
这个作者很懒,什么都没留下…
展开
-
AttributeError: module ‘cv2.cv2‘ has no attribute ‘Tracker_create‘
opencv-python也安装了,但还是报错后来上谷歌,才解决这个问题需要安装opencv-contrib-pythonpip install -i https://mirrors.aliyun.com/pypi/simple/opencv-contrib-python转载 2020-11-13 13:32:01 · 215 阅读 · 0 评论 -
Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)
OpenCV目标跟踪样例:如果你没有时间阅读整个教程,那就看看下面这个视频并了解一下用法。但是如果你想系统学习一下目标跟踪,那就完整读下去。视频地址(需翻墙):https://www.youtube.com/watch?reload=9&v=61QjSz-oLr8&feature=youtu.be什么是目标跟踪?简单的说,在一个视频的连续帧中定位目标就称之为跟踪。这个定义听起来很直接但是在计算机视觉和机器学习领域,跟踪是一个非常广泛的术语,涵盖概念上相似但技术上不同的想法转载 2020-11-12 22:11:25 · 614 阅读 · 0 评论 -
opencv 之 cv2.minAreaRect angle角度问题
经过经验总结和反复的trials and errors, 终于搞清楚了opencv中的 rotation angle角度问题。具体来讲,rotation angle 范围为[-90, 0), 具体角度测算方法可以分为两个步骤(如下图):1. x轴逆时针旋转到最近邻近边,该旋转角即为angle2. 邻近x轴的边即为矩形的宽,另一边为height原理图如下图:minAreaRect函数返回矩形的中心点坐标,长宽,旋转角度[-90,0),当矩形水平或竖直时均返回-90# -*- codi.转载 2020-10-14 14:39:12 · 3621 阅读 · 4 评论 -
opencv 寻找轮廓线与轮廓线的交点, 轮廓与圆的交点
opencv 寻找轮廓线与圆的交点在项目过程中 我遇到了一个问题就是要求一段不规则轮廓线与一个圆的交点,网上查了一些资料,如果轮廓线是规则的话还能算出轮廓线的方程可以方便的解出交点,但是现在轮廓线是不固定的不规则的所以无法解析出轮廓线的方程, 那么我只能用最笨的办法,弄两个存放圆和轮廓的掩膜然后做 and 运算,找出数值是1 的店就是我要的交点了。程序如下:#计算轮廓和圆的交点,返回交点坐标。def get_contour_circle_intersection(contour,circle原创 2020-10-11 21:18:12 · 5343 阅读 · 3 评论 -
pyQT5 学习使用 笔记 六 pyQt5+opencv 显示海康GIGE相机动态视频流
opencv 读取 海康GIGE相机视频流新项目中我们需要使用opencv读取海康威视的工业相机 MV-CA060-10GM 的视频流进行处理。那么首先我们要读取到相机的视频流,总所周知 opencv 读取视频流的办法就是使用 VideoCapture 函数 来读取。 但是经过多次测试,读取了文档和源代码 发现 opencv没有公版驱动可以和GIGE 协议的相机直接对接。那么怎么办呢?然后我想到了海康威视提供的SDK 开发包。在sdk里面翻找了一下 终于发现一批python的例程,所以说大公司就是.原创 2020-09-22 17:17:27 · 6994 阅读 · 29 评论 -
pyQT5 学习使用 笔记 五 opencv+Qt 在Qt UI中显示 opencv 图像。
前文中我们 了解到了 python 中 如何 使用 Qt 的 重要的 信号 与 槽的传递 和执行机制。这也是Qt的一个最重要的机制。了解了这个机制,那么我们可以做很多事情了, 其实 通过前面的种种学习我们也离目的越来越近。我的目的就是 通过 python 实现 opencv+Qt 联合编程。 原先用c++也是可以的,但是现在发现 远远没有 python 来的方便,快捷。闲话不多说,下面我们来看如何实现 opencv+Qt 在python中的联合编程的。...原创 2020-09-22 10:29:52 · 2896 阅读 · 0 评论 -
opencv Histogram Equalization 直方图均衡。
在本节中,我们将学习直方图均衡化的概念,并使用它来提高我们图像的对比度。Theory考虑一幅图像,它的像素值被限制在一些特定的值范围内。例如,更亮的图像将所有像素限制在高值。但是一个好的图像应该有来自图像所有区域的像素。所以你需要拉伸直方图的两端(如下图所示,来自维基百科),这就是直方图均衡化所做的(简单的说)。这通常会改善图像的对比度。我建议你去维基百科上的直方图均衡化页面了解更多细节。它有一个很好的解释和算出的例子,所以你会理解几乎所有后,读它。相反,在这里我们将看到它的Numpy实现翻译 2020-08-30 09:01:19 · 363 阅读 · 0 评论 -
opencv 中 那些 常用的轮廓属性和函数
在这里,我们将学习提取一些常用的属性,如固体,等效直径,掩模图像,平均强度等。更多功能可以在Matlab的区域道具文档中找到。1. Aspect Ratio(纵横比)它是对象的边界矩形的宽度与高度的比率。x,y,w,h = cv.boundingRect(cnt)aspect_ratio = float(w)/h2. ExtentExtent范围是指轮廓面积与边界矩形面积之比。area = cv.contourArea(cnt)x,y,w,h = cv.boundin翻译 2020-08-29 15:16:21 · 793 阅读 · 0 评论 -
OpenCV中的新函数connectedComponentsWithStats使用
在OpenCV3中有了新的专门的函数cv::connectedComponents()和函数cv::connectedComponentsWithStats()定义:intcv::connectedComponents(cv::InputArraynimage,//input8-bitsingle-channel(binary)cv::OutputArraylabels,//outp...转载 2020-08-29 11:23:25 · 1142 阅读 · 0 评论 -
opencv 获取轮廓的 质心 python实现。
opencv 获取轮廓的 质心 python实现。使用findContours 找到 图像轮扣后,我们需要得到轮廓的 质心,那么应该怎么做呢?如果想根据多边形的轮廓信息得到多边形的多阶矩,可以使用类moments,这个类可以得到多边形和光栅形状的3阶以内的所有矩,类内有变量m00,m10,m01,m20,m11,m02,m30,m21,m12,m03,比如多边形的质心为 x = m10 / m00,y = m01 / m00。mu[i] = moments( contours[i], fal.原创 2020-08-28 09:11:09 · 7589 阅读 · 1 评论 -
opencv python 角点坐标的提取
https://blog.csdn.net/zhu_hongji/article/details/81235643图像特征描述角点检测原理ret,labels,stats,centroids=cv2.connectedComponentsWithStats(dst)import cv2 import numpy as npimport matplotlib.pyplot as pltimg =cv2.imread('E:/python/ha.png') imgray=cv2.cvtColo转载 2020-08-21 12:20:40 · 5607 阅读 · 1 评论 -
opencv python 各种轮廓排序
OpenCV轮廓排序如果轮廓线是闭合的 就使用面积来排序使用cv2.contourArea() 获得轮廓面积后进行排序:如下import cv2import numpy as npfrom numpy import random as nrfrom skimage import morphology,data,colorfrom skimage import img_as_float,img_as_ubytedef imgContoursROI(): """使用查找到的..原创 2020-08-19 17:30:28 · 8435 阅读 · 0 评论 -
skimage与opencv图片格式的相互转换
skimage是python的一个图像库,常常与matplotlib一起作为视频、图像类的基本库。而opencv作为非常流行的视觉库,在图像处理中使用非常常见,本篇介绍两种库的图像格式的相互转换skimage图像格式通道:RGB像素值:[0,1]Opencv图像格式通道:BGR像素值:[0,255]转换转换过程现封装如下:def skimage2opencv(src): src *= 255 src.astype(int) cv2.cvtCo转载 2020-08-11 11:09:19 · 751 阅读 · 0 评论 -
python 图像的细化(骨架抽取)
图像的细化主要是针对二值图而言所谓骨架,可以理解为图像的中轴,,一个长方形的骨架,是它的长方向上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。骨架的获取主要有两种方法:(1)基于烈火模拟设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。(2)基于最大圆盘目标的骨架是由目标内所有内切圆盘的圆心组成我们来看看典型的图形的骨架(用粗线表示)细化的算法有很多种,但比较常用的算法是查表法转载 2020-08-10 17:28:36 · 3028 阅读 · 0 评论 -
OpenCV曲线拟合与圆拟合
OpenCV曲线拟合与圆拟合使用OpenCV做图像处理与分析的时候,经常会遇到需要进行曲线拟合与圆拟合的场景,很多OpenCV开发者对此却是一筹莫展,其实OpenCV中是有现成的函数来实现圆拟合与直线拟合的,而且还会告诉你拟合的圆的半径是多少,简直是超级方便,另外一个常用到的场景就是曲线拟合,常见的是基于多项式拟合,可以根据设定的多项式幂次生成多项式方程,然后根据方程进行一系列的点生成,形成完整的曲线,这个车道线检测,轮廓曲线拟合等场景下特别有用。下面就通过两个简单的例子来分别学习一下曲线拟合与圆拟合的转载 2020-08-10 17:12:36 · 10872 阅读 · 5 评论 -
基于opencv的固定阈值分割_自适应阈值分割
阈值分割、自适应阈值分割一、threshold()函数1.1 threshold()函数各参数详解doublethreshold(InputArraysrc,OutputArraydst,doublethresh,doublemaxval,inttype)Ø 第一个参数,InputArray类型的src,输入数组,填单通道 , 8或...转载 2020-08-07 12:48:27 · 468 阅读 · 0 评论 -
【Python-opencv篇】 bitwise_and、bitwise_not等图像基本运算及掩膜
1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask=noArray(), int转载 2020-08-06 17:17:33 · 2894 阅读 · 0 评论 -
openCV任意几何形状感兴趣区域(ROI)提取
图像感兴趣区域(ROI)提取主要使用掩模来进行。掩模是二值图像,感兴趣区域的掩模值设置为255,非感兴趣区域的掩模值为0获取掩模的方法主要有两种方法一使用opencv中Mat函数方法,调用Mat(Rect).setTo方法设置掩模 Mat Mat::operator()( const Rect& roi ) const //调用Mat(Rect).setTo方法 mask(rect).setTo(255);方法二在全为0的原始掩模中画一个封闭区域,使用漫水填充算法填充封闭区..转载 2020-08-06 17:03:14 · 2862 阅读 · 0 评论 -
opencv 轮廓特征应用:按轮廓剪切图像ROI
有时我们在实际应用中会遇到要对 某个轮廓对象内的图像进行处理 时,我们需要把这部分图像单独提取出来,这是我们可以使用指定轮廓做图像剪切的 ROIc++实现void imgContoursROI()//轮廓roi{ //1.查找轮廓的预处理 Mat srcImg = imread("D:/ImageTest/convex.png"); Mat copyImg = srcImg.clone();// GaussianBlur(srcImg,srcImg,Si...原创 2020-08-06 16:35:34 · 4518 阅读 · 0 评论 -
opencv 查找并绘制轮廓
一个轮廓一般对应一系列的点, 也就是图像中的一条曲线。其表示方法可能根据不同的情况而有所不同。 在opencv中可以用findContours()函数从二值图像查找轮廓findContours()函数用于在二值图像中原创 2020-08-05 17:08:03 · 816 阅读 · 0 评论 -
opencv 直方图均衡化
熵熵(entropy)指的是体系的混乱的程度,它在控制论、概率论、数论、天体物理、生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的 定义,是各领域十分重要的参量。熵由鲁道夫·克劳修斯(Rudolf Clausius)提出,并应用在热力学中。后来在,克劳德·艾尔伍德·香农(Claude Elwood Shannon)第一次将熵的概念引入到信息论中来。信息熵利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量原创 2020-08-04 13:20:18 · 320 阅读 · 0 评论 -
opencv 的 图像 变换 python 实现
图像变换的基本模型变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等,如下图:刚体变换(图像旋转) 如果一幅图像中的两点间的距离变换到另一幅图像中后任然保持不变,则这种变换称为刚体变换(Rigid Transform).刚体变换仅局限于平移,旋转和镜像. 在二位控件中,点(x,y)经过刚体变换到点(x',y')的变换公式为: ...原创 2020-08-01 16:30:42 · 936 阅读 · 0 评论 -
opencv remap() python 的实现 以及遇到的疑问。
opencv中重映射函数 remap() 的python实现dst=cv.remap(src, map1, map2, interpolation[, dst[, borderMode[, borderValue]]])Parameterssrc Source image. map1 类型为CV_16SC2、CV_32FC1或CV_32FC2的(x,y)点或x值的第一个映射。有关将浮点表示转换为定点的详细信息,请参阅convertMaps。 map2 第二个y值的映射分原创 2020-08-01 09:10:24 · 1199 阅读 · 0 评论 -
Opencv 创建图像时,CV_8UC1,CV_32FC3等参数的含义
CV_<bit_depth>(S|U|F)C<number_of_channels>1--bit_depth---比特数---代表8bite,16bites,32bites,64bites---举个例子吧--比如说,如 如果你现在创建了一个存储--灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张 灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位--所以它对 应的就是C转载 2020-07-28 15:24:03 · 459 阅读 · 0 评论 -
python opencv 读取图像信息
读取图像高度使用cv2.imread()函数可以读取图片的高,宽,通道数。奇异返回值的第一个值就是图像的高度。具体代码如下:import cv2 as cvimport numpy as npim=cv.imread('fruit.png')height=im.shape[0]cv.imshow('origin image',im)print(im.shape)print('height is:',height)cv.waitKey()(477, 686, 3)heigh原创 2020-07-28 15:08:03 · 1326 阅读 · 0 评论 -
opencv 图像处理 重映射 remap()
重映射 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获得一些插值为非整数像素的坐标,因为原图像与目标图像的像素坐标不是一一对应的。 一般情况下,我们通过重映射来表达每个像素的 位置(x,y),像这样: g(x,y)=f(h(x,y))在这里g()是目标图像,f()是源图像,而h(x,y)的映射方法函数。来看个例子。 若有一幅图像I,对其按照下面条件作重映射: ...转载 2020-07-28 14:36:53 · 2596 阅读 · 2 评论 -
opencv 算子 角点算法 Harris
参考https://blog.csdn.net/poem_qianmo/article/details/29356187 https://www.cnblogs.com/polly333/p/5416172.html算法流程:利用水平,竖直差分算子对图像的每个像素进行滤波以求得Ix,Iy,进而求得M中的四个元素的值。算法源码:代码中如果array为-1,0,1,-1,0,1,-1,0,1}则是求解X方向的,如果为{-1,-1,-1,0,0,0,1,1,1}为Y方向...转载 2020-07-27 16:55:28 · 492 阅读 · 1 评论 -
opencv边缘算子, sobel算子
sobel算子 人眼怎么识别图像边缘?比如有一幅图,图里面有一条线,左边很亮,右边很暗,那人眼就很容易识别这条线作为边缘.也就是像素的灰度值快速变化的地方.对于f(t),其导数f'(t)反映了每一处的变化趋势.在变化最快的位置其导数最大. sobel算子的思路就是模拟求一阶导数.sobel算子是一个离散差分算子.它计算图像像素点亮度值的近似梯度.图像是二维的,即沿着宽度/高度两个方向.我们使用两个卷积核对原图像进行处理:水平方向很好理解,原始像素灰度值--...转载 2020-07-27 14:46:32 · 436 阅读 · 0 评论 -
Opencv 分水岭算法 watershed的图像分割
分水岭算法参考博客:(1)迈克老狼2012https://www.cnblogs.com/mikewolf2002/p/3304118.html(2)-牧野-http://blog.csdn.net/dcrmg/article/details/52498440分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近(求梯度)的像素点互相连接起来构成一个封闭的轮廓。分水岭算法常用的操...原创 2020-07-21 17:10:18 · 818 阅读 · 0 评论 -
opencv cv2 Hough变换 直线检测 圆的检测
霍夫变换Hough霍夫变换(Hough)是一个非常重要的检测间断点边界形状的方法。它通过将图像坐标空间变换到参数空间,来实现直线与曲线的拟合。Hough变换:Hough变换是1962年由Hough提出来的,用于检测图像中直线、圆、抛物线、椭圆等形状能够用一定函数关系描述的曲线,它在影像分析,模式识别等很多领域中得到了成功的应用。Hough变换的基本原理是将影像空间中的曲线(包括直线)变换到参数空间中,通过检测参数空间中的极值点,确定出该曲线的描述参数,从而提取影像中的规则曲线。一条直线的表示转载 2020-07-19 21:23:12 · 1165 阅读 · 0 评论 -
opencv 凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数
凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数道格拉斯-普克算法(Douglas–Peucker algorithm),亦称为拉默-道格拉斯-普克算法(Ramer–Douglas–Peucker algorithm),这个算法最初由拉默(Urs Ramer)于1972年提出,1973年道格拉斯(David Douglas)和普克(Thomas Peucker)二人又独立于拉默提出了该算法。我们知道,一条曲线上包含着无数...转载 2020-07-19 19:36:45 · 1682 阅读 · 0 评论 -
cv2.drawContours 在程序中报error: (-215:Assertion failed) npoints异常的处理方法
在学习 opencv 过程中 遇到一个cv2.drawContours 报error: (-215:Assertion failed) npoints异常的问题检查程序之后没有发现异常。问了 度娘后也没有找到原因,最后找到了一个解决方法:def ContoursDemo2(): """边界框,最小矩形区域和最小闭圆的轮廓""" img=cv2.pyrDown(cv2.imread("test.bmp",cv2.IMREAD_GRAYSCALE)) ret,th..原创 2020-07-18 21:12:45 · 2031 阅读 · 0 评论 -
颜色空间转换 cvtColor() cv2.inRange()
opencv 颜色空间转换 以及cv2.cvtColor(),cv2.inRange()目标学习如何将RGB转换为灰度图,或者RGB转换为HSV写个程序从一副图像获取某个固定颜色的物体学习函数cv2.cvtColor(),cv2.inRange()转换颜色空间在opencv中有超过150种颜色空间转换方法(震惊-_-)但是经常用的只有BGR-灰度图和BGR-HSV使用函数cv2.cvtColor(input_image ,flag),flag是转换类型BGR和灰度图的转换使用转载 2020-07-18 20:00:10 · 1501 阅读 · 0 评论 -
cv2.imread的用法
使用函数cv2.imread(filepath,flags)读入一副图片filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道 cv2.IMREAD_GRAYSCALE:读入灰度图片 cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道 ...原创 2020-07-18 19:17:37 · 2619 阅读 · 1 评论 -
cv2.pyrDown() & cv2.pyrUp() 高斯金字塔 拉普拉斯金字塔
高斯金字塔操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一,这被称为 Octave。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。使用函数cv2.pyrDown() 和 cv2.pyrUp() 构建图像金字塔。cv2.pyrDown()cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金字塔(尺寸变小,分辨率降低)cv2.pyrDown(src, dst=None, dstsize=No...转载 2020-07-18 19:09:50 · 505 阅读 · 0 评论 -
cv2.rectangle()和cv2.boundingRect()
cv2.boundingRect(img)这个函数这个函数很简单,img是一个二值图,也就是它的参数;返回四个值,分别是x,y,w,h;x,y是矩阵左上点的坐标,w,h是矩阵的宽和高。然后利用cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)画出矩行参数解释第一个参数:img是原图第二个参数:(x,y)是矩阵的左上点坐标第三个参数:(x+w,y+h)是矩阵的右下点坐标第四个参数:(0,255,0)是画线对应的rgb颜色第五个参转载 2020-07-18 18:26:12 · 1529 阅读 · 0 评论 -
python opencv minAreaRect 生成最小外接矩形
1、方法:使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是点集数组或向量(里面存放的是点的坐标),并且这个点集中的元素不定个数。2、举例说明:画一个任意四边形(任意多边形都可以)的最小外接矩形,那么点集cnt 存放的就是该四边形的4个顶点坐标(点集里面有4个点)cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) # 必须是array数组的形式rect = cv2..转载 2020-07-18 08:58:10 · 1499 阅读 · 0 评论 -
opencv二值化的cv2.threshold函数
(一)简单阈值简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了。函数为cv2.threshold()这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:• cv2.THRESH_BINARY(黑白二值)• cv2.THRESH_BINARY_INV(黑白二值反转)• cv2.THRESH_TRUNC (得到的图像为多像素值)• cv2.THRESH_TOZERO• cv2.THRE转载 2020-07-17 21:23:25 · 2685 阅读 · 0 评论