python+opencv
Never_Jiao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python+opencv 分水岭算法
基于距离的分水岭分割流程:输入图像——>灰度转换(如果有噪声,在这之前要先消去噪声)——>二值图像——>距离变换——>寻找种子——>生成Marker——>分水岭变换——>输出图像——>ENDimport cv2 as cvimport numpy as npdef watershed_demo(): print(src.sh...原创 2020-02-03 22:38:18 · 1166 阅读 · 1 评论 -
python+opencv 其他形态学操作
顶帽(tophat):是原图像与开操作之间的差值图像。黑帽(blackhat):是闭操作与原图像的差值图像。形态学梯度 (Gradient):1、基本梯度:用膨胀后的图像减去腐蚀后的图像得到的差值图像,称为梯度图像(也是OpenCV中支持的计算形态学梯度的方法)基本梯度 = 膨胀图像 - 腐蚀图像2、内部图像 = 原图像 - 腐蚀图像3、外部梯度 = 膨胀图像 -...原创 2020-02-03 22:04:21 · 316 阅读 · 0 评论 -
Python+OpenCV 开闭操作
1、开操作(Open):图像形态学的重要操作之一,基于膨胀和腐蚀操作组合形成的。主要应用在二值图像分析中,灰度图像亦可。开操作=腐蚀+膨胀,输入图像+结构元素。2、闭操作(Close):闭操作=膨胀+腐蚀,输入图像+结构元素。闭操作可以填充小的封闭区域。3、开闭操作的作用:a、开操作:去除小的干扰块。b、闭操作:填充闭合区域。c、水平或者垂直线提取。(结构元素是水平的长条可以提...原创 2020-02-03 19:09:11 · 1673 阅读 · 0 评论 -
python+opencv 膨胀与腐蚀
图像形态学是灰度图像与二值图像处理中的重要手段,是由数学的集合论等相关理论发展起来的。膨胀与腐蚀都支持任意形状的结构元素。膨胀(Dilate):用掩膜覆盖位置下的最大像素替代中心位置的像素。膨胀的作用:1、对象大小增加一个像素(3*3)2、平滑对象边缘3、减少或者填充对象之间的距离腐蚀(Erode):用掩膜覆盖位置下的最小像素替代中心位置的像素。import cv...原创 2020-02-03 18:57:30 · 2569 阅读 · 0 评论 -
Python+opencv 对象测量
1、弧长与面积a、轮廓发现b、计算每个轮廓的弧长与面积,以像素为单位2、多边形拟合a、获取轮廓的多边形拟合效果b、approxPolyDP(contour,epsilon,close)epsilon越小,折线越逼近真实形状。close决定是否为闭合区域3、几何矩计算a、原点矩 b、中心矩那么图像的重心坐标是,import cv2 as cvi...原创 2020-02-03 11:38:46 · 569 阅读 · 0 评论 -
python+opencv 轮廓发现(基于二值图像)
轮廓发现实基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现的结果。API介绍:1、——findContours 发现轮廓2、——drawContours 绘制轮廓cv.RETR_TREE,外轮廓内部的轮廓也会标记cv.RETR_EXTERNAL,只标记外轮廓import cv2 as cvimport numpy as np...原创 2020-02-03 11:20:29 · 2654 阅读 · 0 评论 -
python+Opencv 圆检测
霍夫圆变换原理1、从平面坐标到极坐标转换是三个参数从C(x0,y0,r)其中x0,y0是圆心2、假设平面坐标的任意一个圆上的点,转换到极坐标中:C(x0,y0,r)处有最大值,霍夫变换正是利用这个原理实现元的检测。(上面的一段话,个人不是很理解,先记下来,慢慢理解。)现实考量:1、因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。2、基于效率考虑,OpenCV...原创 2020-02-03 11:06:58 · 976 阅读 · 0 评论 -
Python+OpenCV 直线检测
霍夫直线变换介绍1、Hough Line Transform用来做直线检测2、前提条件——边缘检测已经完成3、平面空间到极坐标空间转换import cv2 as cvimport numpy as npdef line_detection(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # aper...原创 2020-02-03 10:57:44 · 1006 阅读 · 0 评论 -
python+opencv Canny边缘提取
Canny是边缘检测算法,是一个很好的边缘检测器,很常用也很实用。步骤:1、输入图像通过高斯模糊(GaussianBlur),去掉一些噪声。2、灰度转换(cvtColor)3、计算梯度(Sobel、Scharr)4、非最大信号抑制5、高低阈值输出二值图像非最大信号抑制通俗意义上是指寻找像素点局部最大值,将非极大值点所对应的灰度值置为0,这样可以提出一大部分非边缘的点。...原创 2020-02-03 10:43:58 · 2333 阅读 · 0 评论 -
python+opencv 图像梯度
import cv2 as cvimport numpy as npdef laplacian_demo(image): # dst = cv.Laplacian(image, cv.CV_32F) # lpls = cv.convertScaleAbs(dst) # 自己定义掩膜 kernel = np.array([[1, 1, 1], [1,...原创 2020-02-02 21:10:01 · 165 阅读 · 0 评论 -
python+opencv 图像金字塔(尺度空间不变性)
1、图像金字塔原理:reduce = 高斯模糊 + 降采样降采样:行、列各取偶数行,组成新的图像expand = 扩大 + 卷积(扩大是升采样)2、经过reduce的图像是高斯金字塔L1 = g1 - expand(g2)得到图像的轮廓是拉普拉斯金字塔import cv2 as cvimport numpy as np# 金字塔定义def pyramid_d...原创 2020-02-02 20:59:32 · 617 阅读 · 0 评论 -
python+opencv 超大图像二值化方法
超大图像二值化一般用局部阈值法或者先分块再用全局阈值。import cv2 as cvimport numpy as npdef big_image_binary(image): print(image.shape) cw = 256 ch = 256 h, w = image.shape[:2] # 图像大小获取 gray = cv.cvt...原创 2020-02-02 20:33:16 · 441 阅读 · 0 评论 -
python+opencv 图像二值化
图像二值化的方法:1、全局阈值 2、局部阈值OpenCV中图像二值化方法:1、OTSU 2、Triangle 3、自动与手动 4、自适应阈值import cv2 as cvimport numpy as np# 根据选定的方法自动寻找阈值def threshold_demo(image): # 灰度图像 gray = cv.cv...原创 2020-02-02 20:14:31 · 2184 阅读 · 0 评论 -
python+opencv 模板匹配
1、模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域2、模板匹配首先要有一个模板图像T(给定的子图像)3、另外需要一个待检测的图像——源图像S4、工作方法:在检测图像上,从左到右,从上到下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性就越大。import cv2 as cvimport numpy as npdef template_demo()...原创 2020-02-02 19:23:13 · 1502 阅读 · 0 评论 -
python+opencv 直方图应用
1、直方图均衡化(调整图像对比度,图像清晰化),是图像增强的一个手段,使得亮的地方更亮,暗的地方更暗。可分为全局和局部两个方面。2、直方图的比较import cv2 as cvimport numpy as np# 全局的直方图均衡化def equalHist_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRA...原创 2020-02-02 17:04:59 · 275 阅读 · 1 评论 -
python+opencv 图像直方图(histogram)
(个人理解,对于RGB图像,每个通道的像素值在0-255之间,共256个值,所以Bin的数目是256。加入图像是14位的,则图像一共有个像素值。故一个Bin的大小是64,所以统计得到的直方图x轴是0-255,y轴是0-64。)import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef pl...原创 2020-02-02 16:24:43 · 1058 阅读 · 0 评论 -
python+opencv 边缘保留滤波(EPF)
import cv2 as cvimport numpy as np# 高斯双边(考虑了像素值之间的差异)def bi_demo(image): # 100是sigmaColor,15是sigmaSpace,d设为0,后面根据sigmaSpace自己计算 # 通常sigmaColor取大点儿,可以将小的差异模糊掉,sigmaSpace取小点儿,使和小点儿,可以减少计算...原创 2020-02-02 15:53:27 · 353 阅读 · 0 评论 -
python+opencv 高斯模糊
高斯模糊对高斯噪声有抑制作用假设高斯函数是G(x),对于图像,假设高斯核是1*3的,则x是-1, 0,1,对应于G(-1),G(0)、G(1),sum=G(-1)+G(0)+G(1),则G(-1)/sum + G(0)/sum + G(1)/sum = 1import cv2 as cvimport numpy as npdef clamp(pv): if pv &g...原创 2020-01-31 18:49:59 · 1001 阅读 · 0 评论 -
python+opencv 模糊操作
模糊操作基本原理:1、基于离散卷积2、定义好每个卷积核3、不同卷积核得到不同的卷积效果4、模糊是卷积的一种表象均值模糊:用来去除随机噪声dst = cv.blur(image, (15, 1)) # 15*1的卷积核,水平方向中值模糊:用来去除椒盐噪声dst = cv.medianBlur(image, 5) # 5*5的卷积核自定义模糊:k...原创 2020-01-31 18:43:58 · 456 阅读 · 0 评论 -
python+opencv ROI与泛洪填充
import cv2 as cvimport numpy as npdef fill_color_demo(image): # 彩色图像的填充 copyImg = image.copy() h, w = image.shape[:2] mask = np.zeros([h+2, w+2], np.uint8) # mask的大小和数据类型必须是这种 ...原创 2020-01-31 18:32:03 · 433 阅读 · 0 评论 -
python+opencv像素运算(算术运算和逻辑运算)
import cv2 as cvimport numpy as npdef add_demo(m1, m2): dst = cv.add(m1, m2) cv.imshow('add_demo', dst)def subtract_demo(m1, m2): dst = cv.subtract(m1, m2) cv.imshow('subtract_...原创 2020-01-31 18:21:45 · 476 阅读 · 0 评论 -
python+opencv色彩空间的转换、通道的分离与合并
import cv2 as cvimport numpy as npdef extrace_object_demo(image): capture = cv.VideoCapture('视频文件的路径')def color_space_demo(image): # 色彩空间的转换 gray = cv.cvtColor(image, cv.COLOR_BGR2G...原创 2020-01-31 18:16:36 · 1040 阅读 · 0 评论 -
python+opencv修改像素值、创建图像
import cv2 as cvimport numpy as np# 将图像中的像素值改为 255-原像素值def access_pixels(image): print(image.shape) height = image.shape[0] width = image.shape[1] channels = image.shape[2] ...原创 2020-01-31 18:12:56 · 5755 阅读 · 1 评论 -
python+opencv显示图像或者视频
import cv2 as cvimport numpy as npdef get_image_info(image): # 打印图片属性 print(type(image)) # 打印图片形状 print(image.shape) # size = shape的三个值相乘 print(image.size) # 打印image类型...原创 2020-01-31 18:01:23 · 662 阅读 · 0 评论
分享