OpenCV4【14】-实例 提取特定区域
摘要:源图像 目标是 提取 四个 大圈圈 ; 具体项目描述见 参考资料 实现过程 import cv2 as cv import numpy as np img0 = cv.imread('imgs/640.webp') ########### 预处理 img = cv.cvtColor(img0, cv
阅读全文
OpenCV4【13】-轮廓检测与属性
摘要:轮廓可以简单理解成 具有相同颜色或灰度的 连续的点 连成的曲线; 轮廓在形状分析、物体检测、物体识别 中很有用; 注意: 1.为了准确,需要使用 二值化 图像,故需进行 阈值化处理 或 canny 边缘检测 2.opencv 中与轮廓相关的函数 会改变原始图像 轮廓检测与绘制 def findCon
阅读全文
OpenCV4【12】-边缘检测
摘要:Canny 边缘检测 Canny 边缘检测是一种被广泛应用的算法,效果较好 原理 详见 参考资料1 没搞懂,先记下来,空了研究吧 该方法使用了比高斯差分算法更复杂的技巧,如多向灰度梯度和滞后阈值化。 Canny边缘检测器算法基本步骤: 平滑图像:通过使用合适的模糊半径执行高斯模糊来减少图像内的噪声。
阅读全文
OpenCV4【10】-直方图均衡化
摘要:图像直方图 图像直方图 是 图像的 一种统计特征,可以图像质量检测,也可以用于 图像相似度检测; 图像直方图的形态 可以反应图像的 质量,特别是 对比度,大致如下图 通过 直方图修整 可以提升图像质量,直方图修整 可以分为两类,一是 直方图均衡化,二是 直方图规定化,本文主要讲 均衡化 直方图均衡化
阅读全文
OpenCV4【9】-图像形态学处理
摘要:形态学处理 主要针对 有残缺图像、有斑点图像,不同区域有粘连的图像,使其变得丰满,或者去除多余的像素,也有类似去噪的作用; 形态学处理 的方法有 腐蚀、膨胀、开运算、闭运算、顶帽、底帽、形态学梯度; 形态学处理 通常针对 灰度图,确切的说是二值图,最好是 黑底 白景 腐蚀 腐蚀逻辑:和滤波一样,也存
阅读全文
OpenCV4【8】- 图像阈值即二值化
摘要:图像阈值,即图像二值化,包括 简单阈值 自适应阈值 Otsu 阈值 局部阈值 全局阈值 熵算法 等多种方式,本文收集整理一下 简单阈值 对所有像素使用 统一固定 的阈值 def threshold(src, thresh, maxval, type, dst=None): src:单通道图像,通常是
阅读全文
OpenCV4【7】-图像几何变换
摘要:图像几何变换 分为 缩放、平移、旋转、仿射变换、透视变换 等; 其思路大致相同:在 原图像上 找几个点的坐标,然后设定 变换后 这些点对应的 坐标,根据两组坐标 计算出一个 转换矩阵,把原图像所有点 按这个转换矩阵进行转换即可 缩放 缩放只是调整图像的大小; 其转换矩阵为 def resize(sr
阅读全文
OpenCV4【6】-颜色空间
摘要:opencv 中有几百种颜色空间,可通过如下方式获取; flags = [i for i in dir(cv) if i.startswith('COLOR')] print(len(flags)) # 296 种 其中最常用的是 gray 和 hsv 空间; 颜色空间转换 opencv 直接读取图
阅读全文
OpenCV4【5】-图像基本运算
摘要:图像运算有很多种,包括 加法、减法、乘法、除法、位运算、平方根、对数、绝对值等; 加减乘除等 需保持 图像 shape 和 dtype 一致,或者第二个图像是个标量值; dst = cv.add(src1, src2[, dst[, mask[, dtype]]]) dst = cv2.subtra
阅读全文
OpenCV4【4】- 图像基本操作
摘要:图像基本操作很多,这里做个汇总 首先要注意,opencv 中像素通道顺序为 BGR,与我们常说的 RGB 刚好相反。 首先准备一张图片,可创建新图像,也可读取已存在的图像 img = np.zeros(shape=(300, 300, 3), dtype=np.uint8) cv.namedWind
阅读全文
OpenCV4【3】- GUI特性:轨迹栏作为调色板
摘要:操作步骤: 1. cv2.createTrackbar 创建 rgb 轨迹栏 2. cv2.getTrackbarPos 获取 轨迹栏位置 3. 给图片着色 import numpy as np import cv2 as cv def nothing(x): pass # 创建一个黑色的图像,一个
阅读全文
OpenCV4 【2】- GUI特性 :绘图功能 与 鼠标事件
摘要:绘图功能 使用 opencv 绘制各种形状,简单用法示例 import cv2 as cv import numpy as np img = np.random.randint(0, 255, size=(1280, 1280, 3)).astype(np.uint8) ### 画线 ## def
阅读全文
OpenCV4【1】- 入门用法
摘要:opencv 是一个强大的图像处理模块,本节介绍一下基本操作 安装 详情请百度 pip install opencv-python 查看版本 import cv2 as cv ### 查看版本 print(cv.__version__) # 4.5.2 创建图像 直接用 np 创建图像,并在窗口显示
阅读全文
SKimage-transform.SimilarityTransform 相似变换 及其 人脸对齐的应用
摘要:相似变换 相似变换:等距变换+均匀尺度缩放; 等距变换:平移+旋转,所谓平移旋转其实就是 wx+b,w 和 b 组成变换矩阵 在等距变换中,角度、平行性、垂直性 不发生变换 SimilarityTransform 用法 这是一个类 class SimilarityTransform(Euclidea
阅读全文
图像分割 - KMeans 实现
摘要:图像分割是一种图像处理方法, 它是指将一副图像分割成若干个互不相交的区域; 图像分割实质就是像素的聚类; 图像分割可以分为两类:基于边缘的分割,基于区域的分割, 聚类就是基于区域的分割; KMeans 实现图像分割 KMeans 分割图像实质上是对像素的聚类,每个类有个代表像素,把原始像素替换成该类
阅读全文
tensorflow - 图像预处理
摘要:tensorflow 中自带了很多图像处理的方法,基本都在 tf.image 模块中,虽然不如 opencv 强大,但也比较常用,这里做个记录。 图像编解码 1. 用 tf 的方法读取图片后,都需要进行编解码,才能在 tf 中继续处理; 2. tf 提供了各种类型图像的编解码:decode_gif,
阅读全文
SciPy - 滤波 与 图像去噪
摘要:滤波 滤波常用于降噪; 滤波有多种,中值滤波,均值滤波,等等,说的很高大上,其实很简单,各种滤波原理类似。 以中值滤波为例,把 每一点的数据 用 该点指定邻域内数的中位数 代替, 如 数据 [1,8,3],邻域大小为3,则8经过滤波后是3,[1,3,8]的中位数;数据可以是多维的,邻域也可以为多维;
阅读全文