OpenCV学习——直方图、边缘检测、模板匹配以及霍夫变化
OpenCV学习——直方图、边缘检测、模板匹配以及霍夫变化
- OpenCV学习——直方图、边缘检测、模板匹配以及霍夫变化
- 直方图
- 图像直方图
- 直方图的术语和意义
- 掩膜的应用
- 直方图均衡化
- 自适应的直方图均衡化
- 边缘检测
- Sober检测算子
- 第一:需要在两个方向进行求导:
- 第二、整合
- Schar算子
- **API**
- Laplacian算子
- Canny边缘检测算法
- 模板匹配和霍夫变化
- 模板匹配
- 霍夫变化
- 霍夫线检测
- 霍夫圆检测
OpenCV学习——直方图、边缘检测、模板匹配以及霍夫变化
直方图
概念:又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。(百度百科)
图像直方图
概念:数字图像中亮度分布得直方图,标绘了图像中每个灰度值[0 , 255]的像素个数。横轴表示灰度值,纵轴表示分布情况。
直方图的术语和意义
一些术语:
dims:需要统计的特征数目(=1表示统计灰度值)。
bins:每个特征空间子区段的数目,直条或组距(可以理解成一段区间)。
range:要统计特征的取值范围。
意义:
- 图像中像素强度分布的图形表达式。
- 每一个灰度值的像素个数。
- 不同图像的直方图可能是相同的。
# 绘制img的直方图
cv2.calcHist(img, channels, mask, histSize, ranges[, hist, accumulate])
# img:图像,传入函数时要用[]括起来,例如[img]。
# channels:灰度图:[0],彩色图像则传入参数可以为[0]、[1]、[2]分别表示R、G、B通道
# mask:掩膜图像。统计整幅图像的直方图则设为None,否则需要制作掩模图像
# histSize:bin数目,要用[]括起来
# ranges:像素值范围,一般为[0,256],python是前包后不包的,理论上还是[0,255]灰度值。
代码测试:
import cv2 as cv
import matplotlib.pyplot as plt
# 以灰度图的方式读取图像
img = cv.imread('img/18.jpg',0)histr = cv.calcHist([img], [0], None, [256], [0, 256])cv.imshow("original", img)
cv.waitKey(0)
# 创建画布
plt.figure(figsize=(10, 6), dpi=100)
plt.plot(histr)
plt.show()
掩膜的应用
什么是掩膜?
掩膜是用选定的图像、图形或物体,对要处理的图像进行遮挡,来控制图像处理的区域。
在数字图像处理中,利用二位矩阵进行掩膜(0,1组成的二进制图像),利用掩膜对图像进行遮掩,其中值为1的区域进行处理,值为0的区域进行遮掩操作。
主要用途:
- 提取感兴趣区域。
- 屏蔽不需要的图形区域
- 结构特征提取:用相似性变量或图像匹配方法检测和提取图像中与掩膜相似的结构特征。
- 特殊形状图像的制作
总之:就是感兴趣的我对我掩膜矩阵进行赋值为1进行显示,不感兴趣,我赋值为0,我不看你。
import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltimg = cv.imread('img/11.jpg', 0)# 创建掩膜
mask = np.zeros(img.shape[:2], np.uint8)
mask[100:350, 100:300] = 1# 自己与自己进行与操作保持不变,在取mask区域
mask_img = cv.bitwise_and(img, img, mask = mask)
plt.imshow(mask_img,cmap=plt.cm.gray)# 计算掩膜区域的直方图
mask_histr = cv.calcHist([img], [0], mask, [256], [0, 256])cv.imshow("original", img)
cv.waitKey(0)
plt.figure(figsize=(10, 6), dpi=100)
plt.plot(mask_histr)
plt.show()
别问为啥不用
OpenCV学习——直方图、边缘检测、模板匹配以及霍夫变化相关推荐
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- [图像识别]8.OpenCV的模板匹配和霍夫检测
回顾,上节课你学了什么? Sobel_x_or_y=cv.Sobel(img,ddepth,dx,dy,dst,ksize,scale,delta,borderType) 常用 Sobel_x_or ...
- 【opencv学习】【模板匹配】
今天学习模板匹配 模板图片 目标图像 import cv2 import matplotlib.pyplot as plt# 模板匹配的原理: # 一个模板图像在目标图像上机芯从左到右从上到下进行滑动 ...
- OpenCV与图像处理学习十六——模板匹配
OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...
- python opencv模板匹配多目标_基于opencv的多目标模板匹配
利用opencv进行多目标模板匹配,只要是利用其matchTemplate函数,但在多目标(这里是讨论目标图片中不同大小模板的匹配),以下贴出代码和图片,供大家参考: #include #includ ...
- OpenCV实现NCC多角度模板匹配(附源码)
效果预览 OpenCV实现NCC多角度模板匹配 源码下载与参考链
- OpenCV基于形状的模板匹配
OpenCV基于形状的模板匹配 引言 基于形状的匹配算法 具体代码 KcgMatch.h KcgMatch.cpp main.cpp 匹配的结果 引言 在OpenCV中有个用于模板匹配的基本函数mat ...
- OpenCV之特征点模板匹配
OpenCV之特征点模板匹配 版权声明:博文为博主原创文章,转载请注明出处 :https://blog.csdn.net/ganbelieve/article/details/89959505 介绍一 ...
- opencv for andriod java代码实现霍夫变化(HoughLinesP)
opencv for andriod java代码实现霍夫变化(HoughLinesP) Mat mCannyMat1=new Mat(); Mat rgbMat1 = new Mat(); Mat ...
最新文章
- TCP连接管理【三次握手-四次挥手】
- 1人15篇入选?华人论文知多少?深度分析ICCV2019论文录取背后的那些事儿!
- java web从入门到精通视频_JavaWeb从入门到精通(视频实战版)
- Python DataFrame数据清洗后行索引不连续——reset_index
- android10热点验证身份,在 Android 上使用 Microsoft 进行身份验证
- Flex组件的项目渲染器(ItemRenderer)使用总结
- python 装机配置_Python实现自动装机功能案例分析
- mysql 独占查询,MySql历史与架构
- python switch语句的多种实现方法
- python中的数据分析库有哪些_全网最全数据分析师干货-python篇
- RNN、LSTM、GRU
- dubbo学习(八)dubbo项目搭建--消费者(服务消费者)
- SQLSERVER2000 存储过程与ORACLE存储过程对比
- 【mysql的编程专题①】流程控制与其他语法
- NNDL实验实验六 卷积神经网络(4)ResNet18实现MNIST
- 三维尺寸链计算和公差分析软件-DTAS-功能
- USB协议学习笔记 - CUSTOM HID控制LED
- 如何把一个数字x最右侧那个1拿出来,变成00...10..的格式
- 『原创』统计建模与R软件-第四章 参数估计
- android禁止屏幕自动旋转_如何禁止屏幕翻转