OpenCV
文章平均质量分 59
OpenCV
江南蜡笔小新
这个作者很懒,什么都没留下…
展开
-
Windows Conda安装openCV报错 0000
conda install -c anaconda opencv原创 2021-03-27 16:13:51 · 202 阅读 · 0 评论 -
numpy如何加法截断/饱和加运算
使用numpy的+或者add 在溢出后会进行取模例如unit8时,255+97=96这就是非饱和运算使用openCV的加法 可以使255+97=255更符合我们的实际情况原创 2021-02-09 16:42:19 · 631 阅读 · 1 评论 -
[OpenCV] 图像分割之利用分水岭算法cv.watershed完成前景提取
使用分水岭算法进行图像分割时,基本的步骤为:1.通过形态学开运算对原始图像 O 去噪。2.通过腐蚀操作获取「确定背景 B」。需要注意,这里得到「原始图像-确定背景」即可。3.利用距离变换函数 cv2.distanceTransform()对原始图像进行运算,并对其进行阈值处理,得到「确定前景 F」。4.计算未知区域 UN(UN=O –B-F)。5.利用函数 cv2.connectedComponents()对原始图像 O 进行标注。6.对函数 cv2.connectedComponents()的原创 2020-06-18 18:24:43 · 1383 阅读 · 1 评论 -
[OpenCV] 图像分割之利用 cv2.distanceTransform 提取前景
提取硬币前景当图像内的各个子图没有连接时,可以直接使用形态学的腐蚀操作确定前景对象,但是如果图像内的子图连接在一起时,就很难确定前景对象了。此时,借助于距离变换函数 cv2.distanceTransform()可以方便地将前景对象提取出来。距离变换函数 cv2.distanceTransform()计算二值图像内任意点到最近背景点的距离。一般情况下,该函数计算的是图像内非零值像素点到最近的零值像素点的距离,即计算二值图像中所有像素点距离其最近的值为 0 的像素点的距离。当然,如果像素点本身的值为 0原创 2020-06-18 16:30:36 · 11614 阅读 · 0 评论 -
[OpenCV] 图像分割之OpenCV + Python 提取米粒轮廓 rice.png
使用形态学操作,原图像-腐蚀得到轮廓,实际上就是一个求内部梯度的操作import numpy as npimport cv2 as cvfrom matplotlib import pyplot as plt# 1rice = cv.imread('rice.png', cv.IMREAD_GRAYSCALE)kernel = np.ones((5, 5), np.uint8)rice_ero = cv.erode(rice, kernel)rice_diff = cv.subtract(原创 2020-06-18 15:43:14 · 1792 阅读 · 0 评论 -
什么是边缘响应? edge response of DoG
什么是边缘响应,如何解决边缘响应?学习的时候碰到一个名词,高斯差分金字塔边缘响应edge response of DoG。在网上找了一些资料,不知道是这个名词不常规还是我搜索的方法不正确,总之内外没找到一个规范解释。只在某乎上找到了一位网友回答,然后我又去看了一些SIFT和DoG的资料,现在我对边缘响应的认识就是:由于某种原因,在进行滤波等操作的时候,边缘的“权重”变强。比如边缘对 Band pass就可能会存在影响效果加强的情况,这样带来的后果就是,如果某噪音正好在边缘上,就会被更放大。因此原创 2020-06-17 21:32:47 · 3139 阅读 · 2 评论 -
[OpenCV] HoughLines和HoughLinesP的区别与不同效果展示
霍夫变换(Hough Transform )HoughLines 和HoughLinesP 有什么不同?一、背景1. HoughLines定义OpenCV 提供了函数 cv2.HoughLines()用来实现霍夫直线变换,该函数要求所操作的源图像是一个二值图像,所以在进行霍夫变换之前要先将源图像进行二值化,或者进行 Canny 边缘检测。函数 cv2.HoughLines()的语法格式为:lines=cv2.HoughLines(image,rho,theta,threshold)式中:● i原创 2020-06-17 19:42:35 · 24299 阅读 · 7 评论 -
[OpenCV] apporxPolyDP和convexHull有什么不同?轮廓多边形逼近和凸包的区别
apporxPolyDP和convexHull的区别?轮廓多边形逼近和凸包有什么不同?apporxPolyDP和convexHull的效果对比一、背景学习CV的过程中看到了这两个函数,简单记录一下1. apporxPolyDP轮廓多边形逼近 apporxCurve=cv2.apporxPolyDP(curve,epsilon,closed)2.convexHull凸包 hull=cv2.convexHull(points[,clockwise,[,returnPoints]])二、代码及效果原创 2020-06-15 21:07:35 · 788 阅读 · 0 评论 -
[OpenCV] cv.findContours()中的mode、 hierarchy参数效果详解
一、背景cv.findContours()中的mode有什么用?cv.findContours()中的mode hierarchy是什么?有什么效果?阅读官方文档,熟悉cv.findContours(),我们可以知道,mode指定的是轮廓索引方式。那么有哪些索引方式呢?这是定义在C++中的枚举类型,将就参考一下特别说明 ,FLOODFILL用的不多,本文咱不作探究;有兴趣的朋友可以看看这个 In opencv’s findContours, what does cv.RETR_FLOOD原创 2020-06-14 11:30:25 · 1526 阅读 · 0 评论 -
[OpenCV / The Laplacian pyramid] 浅析拉普拉斯金字塔 / 利用拉普拉斯完成采样的恢复 学习笔记
拉普拉斯金字塔(The Laplacian pyramid)有什么用?如何实现上下采样的逆操作?是什么原理?拉普拉斯金字塔的应用?拉普拉斯金字塔恢复图片?拉普拉斯金字塔与高斯金字塔结合一、背景众所周知,上采样和下采样是不不可逆的操作。也就是:通过以上分析可知,向上采样和向下采样是相反的两种操作。但是,由于向下采样会丢失像素值,所以这两种操作并不是可逆的。也就是说,对一幅图像先向.上采样、再向下采样,是无法恢复其原始状态的;同样,对一幅图像先向下采样、再向上采样也无法恢复到原始状态。原创 2020-06-13 16:29:41 · 8406 阅读 · 0 评论 -
[OpenCV] cv.remap() 重映射学习笔记/map1 map2易混点
学习remap的时候发现map1和map2的参数跟我的直观理解略有差别,在次记录一下。一、背景把一幅图像内的像素点放置到另外一幅图像内的指定位置,这个过程称为重映射。OpenCV 提供了多种重映射方式,但是我们有时会希望使用自定义的方式来完成重映射。OpenCV 内的重映射函数 cv2.remap()提供了更方便、更自由的映射方式,其语法格式如下:dst=cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])式中:● dst原创 2020-06-10 15:02:33 · 12100 阅读 · 4 评论 -
利用Python+OpenCV与Xor完成图片加密
一、背景重啃OpenCV的过程中发现了一个有趣的Demo,通过 异或(xor)对图片进行加解密 。突然想起了多年前学习C++的时候学到的一个奇技淫巧:不需要中间变量,利用xor完成交换两个变量值。大概就是这样:然后再次去了解了一下xor在计算机中多方面的应用,这里暂且不表。二、实现代码按c 进行加/解密,esc键退出import numpy as npimport cv2 as cvorg = cv.imread('apple.jpg', 0)mask = np.random.ran原创 2020-06-09 00:03:34 · 1036 阅读 · 0 评论 -
[OpenCV练习题实现] 1.编写一个小应用程序以找到Canny边缘检测,该检测的阈值可以使用两个跟踪栏进行更改。这样,你可以了解阈值的影响
1.背景阅读官方文档/手册,学习openCV的过程中遇到的练习题,记录一下。1.编写一个小应用程序以找到Canny边缘检测,该检测的阈值可以使用两个跟踪栏进行更改。这样,你可以了解阈值的影响2. 代码部分不是很会用matplotlib来绘图,所以用利用OpenCV的窗口来完成了这个任务。如果您有更好的办法,欢迎交流指正~import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltT = [100, 200]原创 2020-05-28 17:10:06 · 593 阅读 · 2 评论 -
[OpenCV练习题实现] 尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。
1.背景阅读官方文档/手册,学习openCV的过程中遇到的练习题,记录一下。练习题尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。2. 代码部分import cv2 as cvimport numpy as npcap = cv.VideoCapture(0)while (1): # 读取帧 _, frame = cap.read() # 转换颜色空间 BGR 到 HSV hsv = cv.cvtColor(frame, cv.原创 2020-05-27 17:18:14 · 1582 阅读 · 4 评论 -
[OpenCV] 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡
1.问题背景opencv 官方手册 文档 练习题练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡2.代码部分按任意键切换幻灯片import numpy as npimport cv2 as cvimport time# 加载两张图片img1 = cv.imread('messi5.jpg')img2 = cv.imread('logo.jpg')l, h = img1.shape[0:2]img2_R = cv.resi原创 2020-05-26 16:24:09 · 919 阅读 · 1 评论 -
[opencv] 练习题实现 使用轨迹栏创建颜色和画笔半径可调的Paint应用程序。有关绘制的信息,请参阅有关鼠标处理的先前教程。
1.问题背景opencv 官方手册 文档 练习题使用轨迹栏创建颜色和画笔半径可调的Paint应用程序。有关绘制的信息,请参阅有关鼠标处 理的先前教程。2.代码部分另外一个官方demo留下的作业,代码难以精美,请理解。import numpy as npimport cv2 as cv# 鼠标回调函数def draw_circle(event, x, y,thick,param): global ix, iy, drawing, mode,color,thicness if原创 2020-05-25 23:38:57 · 380 阅读 · 0 评论 -
[OpenCV] 练习题 1. 在最后一个示例中,我们绘制了填充矩形。您修改代码以绘制一个未填充的矩形。
在最后一个示例中,我们绘制了填充矩形。您修改代码以绘制一个未填充的矩形。ps:手册中,官方提供了一个绘制填充矩形的demo,是练习题的背景。关于cv.rectangle 如下2. 代码部分import numpy as npimport cv2 as cvdrawing = False # 如果按下鼠标,则为真mode = True # 如果为真,绘制矩形。按 m 键可以切换到曲线ix,原创 2020-05-25 01:03:25 · 680 阅读 · 2 评论 -
【转载】OpenCV是怎么完成模板匹配的/ 模板匹配的原理
OpenCV 学习笔记(模板匹配)OpenCV是怎么完成模板匹配的?模板匹配的原理?模板匹配如何确定相似度,有哪些方法?模板匹配是在一幅图像中寻找一个特定目标的方法之一。这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。在 OpenCV 中,提供了相应的函数完成这个操作。matchTemplate 函数:在模板和输入...转载 2020-04-11 14:53:13 · 1201 阅读 · 0 评论 -
OpenCV学习笔记(六)【图像特征:harris角点检测、SIFT】
一、图像特征-harris角点检测二、Scale Invariant Feature Transform(SIFT)尺度不变量特征变换图像尺度空间在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然而计算机要有相同的能力却很难,所以要让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同的尺度下都存在的特点。尺度空间的获取通常使用高斯模糊来实现...原创 2020-04-04 16:30:54 · 720 阅读 · 0 评论 -
OpenCV学习笔记(五)【直方图与模板匹配】
一、直方图cv2.calcHist(images,channels,mask,histSize,ranges)images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们...原创 2020-04-04 16:26:11 · 261 阅读 · 0 评论 -
【转载】OpenCV形态学操作集合
感谢原作者辛勤付出,仅做笔记之用https://blog.csdn.net/danmeng8068/article/details/81061615https://blog.csdn.net/zhu_hongji/article/details/81480400https://www.cnblogs.com/pacino12134/p/9890492.html...原创 2020-04-02 16:40:25 · 282 阅读 · 0 评论 -
OpenCV学习笔记(四)【拉普拉斯/高斯金字塔】
高斯金字塔 ●对图像向上采样:pyrUp函数 ●对图像向下采样:pyrDown函数图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。...原创 2020-03-13 21:15:22 · 350 阅读 · 0 评论 -
OpenCV学习笔记(三)【Canny算法边缘检测基础】
1.Canny边缘检测使用高斯滤波器,以平滑图像,滤除噪声。计算图像中每个像素点的梯度强度和方向。应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。通过抑制孤立的弱边缘最终完成边缘检测。...原创 2020-03-13 16:58:56 · 611 阅读 · 0 评论 -
OpenCV学习笔记(二)【三种算子】
1索贝尔算子不但产生较好的边缘检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。2Scharr算子灵敏度更高,噪声影响较大。3拉普拉斯算子是图像的离散二阶导数,用于发现边缘突变,但对于噪声来说比较灵敏,一般配合其他技术一起使用。...原创 2020-03-12 22:07:05 · 394 阅读 · 0 评论 -
OpenCV学习笔记(一)【图像的基本处理/形态学部分操作】
1.图像融合: #相当于% 256(img_cat + img_cat2)[:5,:,0] #越界取255cv2.add(img_cat,img_cat2)[:5,:,0]2.滤波# 均值滤波# 简单的平均卷积操作blur = cv2.blur(img, (3, 3))cv2.imshow('blur', blur)cv2.waitKey(0)cv2.destroyAllW...原创 2020-03-12 21:07:13 · 424 阅读 · 0 评论