Python-OpenCV 笔记2 -- 图像的基本属性和操作
Python-OpenCV 笔记2 – 图像的基本属性和操作
1、图片基本属性
# 图像的类型
type(image)# 图像的大小,元组(行,列,通道)
image.shape# 图像的大小,值为shape三个元素的乘积
image.size # 图像像素的数据类型
image.dtype
2、图片基本操作
图像缩放:
# 缩放为指定尺寸
img1 = cv2.resize(img1, (1000, 750))
图像颜色转换:
# 彩色图转灰度图
img = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
图像通道分离和合并:
# 注意通道的顺序是b, g, r
# 图像通道分离
b,g,r = cv2.split(img) b = cv2.split(img)[0]
g = cv2.split(img)[1]
r = cv2.split(img)[2]# 图像通道合并
img = cv2.merge([b,g,r])
3、图像滤波
均值滤波(Averaging):
# 函数原型
blur(src, ksize[, dst[, anchor[, borderType]]] )# 实例
blur = cv2.blur(img, (3,3))
- src:输入图片
- ksize:滑动窗口的大小,(x, x),x通常为奇数3,5,7,9
- dst:输出图片
- anchor:锚点,即滑动窗口的计算点,(-1, -1)表示中心点
- borderType:超出图像的像素点插值方式
高斯滤波(Gaussian Blurring):
# 函数原型
GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])# 实例
blur = cv2.GaussianBlur(img,(5,5),0)
- sigmaX:高斯核X方向的标准差,XY都等于0时按照ksize的宽和高来定
- sigmaY:高斯核Y方向的标准差,等于0或默认时=sigmaX
- 标准差越大中间元素的占比越大
中值滤波(Median Blurring):
# 函数原型
medianBlur(src, ksize[, dst])# 实例
median = cv2.medianBlur(img,5)
- ksize:核大小,一个正整数,通常3,5,9
- 对椒盐噪声效果好
双边滤波(Bilateral Filtering):
# 函数原型
bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])# 实例
blur = cv2.bilateralFilter(img,9,75,75)
- 边缘较其它滤波清晰,比较耗时
- d:核的直径,推荐<=5
- sigmaColor:颜色空间参数,越大表示较远的相同颜色像素值影响越大
- sigmaSpace:坐标空间参数,越大时离得较远的像素影响越大
4、图像二值化
函数原型:
# 普通阈值
threshold(src, thresh, maxval, type, dst=None)# 自适应阈值,图片分成小块计算阈值
adaptiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C,dst=None)
- src:输入图片
- thresh:灰度值阈值
- maxval:最大的灰度值
- type:二值化方法。THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO , THRESH_TOZERO_INV ,THRESH_OTSU(最佳阈值)
- dst:输出图片
- maxValue:与 maxval 相同
- adaptiveMethod:ADAPTIVE_THRESH_MEAN_C(通过平均的方法取得平均值)、ADAPTIVE_THRESH_GAUSSIAN_C(通过高斯取得高斯值) ,这两种方法最后得到的结果要减掉参数里面的C值
- thresholdType:与 type 相同
- blockSize:计算阈值的邻域块大小,正方形,必须为奇数
- C:偏移值,计算出的自适应阈值要加上该偏移值
# 灰度值超过 100 的变为 255,小于的为 0
ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)# 最佳阈值二值化
ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)# 自适应阈值,返回值没有ret
thresh1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 5)
5、图像梯度图
Sobel 算子:
函数原型:
Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None)
- src:待计算的输入图
- ddepth:图片的深度
- dx:x轴的微分阶数
- dy:y轴的微分阶数
- dst:输出图片
- ksize:算子的核大小,必须为1、3、5、7
- scale:微分值的缩放系数
- delta:微分值的偏差值
- borderType:数值的插值类型
# Sobel算子求水平和垂直梯度
x = cv2.Sobel(img, cv2.CV_16S, 1, 0)
y = cv2.Sobel(img, cv2.CV_16S, 0, 1)# 求梯度的绝对值
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)# 水平和垂直梯度的加权和
dst = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
6、Canny边缘检测
Canny边缘检测原理
# 函数原型
Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]])# 实例
edges = cv2.Canny(img,100,200)
- image:输入图片,必须为单通道灰度图
- dx:输入图片的x方向梯度图
- dy:输入图片的y方向梯度图
- threshold1:选择是否保留某点梯度的阈值低值
- threshold2:选择是否保留某点梯度的阈值高值
- apertureSize:Sobel算子的核大小
Python-OpenCV 笔记2 -- 图像的基本属性和操作相关推荐
- python+OpenCV笔记(二十四):Shi-Tomasi角点检测
Shi-Tomasi角点检测 原理 python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理.Shi-Tomasi角点检测原理)https://blog.csdn.net/qq ...
- python+OpenCv笔记(十三):边缘检测——Sobel检测算子
Sobel检测算子 概述: Sobel边缘检测算法比较简单,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,但是很多实际应用的场合,sobel边缘却是首选,Sobel算子 ...
- 用python怎么样实现图像二值化_使用Python+OpenCV如何实现图像二值化
使用Python+OpenCV如何实现图像二值化 发布时间:2020-10-26 14:15:52 来源:亿速云 阅读:77 作者:蛋片鸡 这篇文章运用简单易懂的例子给大家介绍使用Python+Ope ...
- Python+OpenCV:立体图像深度图(Depth Map from Stereo Images)
Python+OpenCV:立体图像深度图(Depth Map from Stereo Images) 理论 If we have two images of same scene, we can g ...
- Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm)
Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm) ################# ...
- 灰度拉伸python,Python OpenCV实例:图像灰度拉伸
Python OpenCV实例:图像灰度拉伸 Python OpenCV实例:图像灰度拉伸 为什么80%的码农都做不了架构师?>>> #coding:utf-8 ''' 灰度拉伸 定 ...
- python+OpenCv笔记(六):图像的几何变换(缩放、平移、旋转、仿射、透射、金字塔)
一.图像的缩放 OpenCv API: cv2.resize(src, dsize, fx, fy, interpolation) 参数: src:输入的图像 dsize:绝对尺寸,直接将图像调整为指 ...
- 数字图像处理与Python实现笔记之图像特征提取
数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...
- 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
转载请注明详细地址 本文简单介绍了图像常见几何特征的概念以及求解方法 本文介绍了Python和opencv求解几何特征的常用方法 目录 其他形状外接轮廓的方法可以参考:<OpenCV-Pytho ...
最新文章
- 当前主流、最新技术回眸(三)
- Rest风格的URL地址约束||高版本Tomcat;Rest支持有点问题
- html树形多选下拉列表,EasyUI 多行树形下拉框(Multiple ComboTree)_Vue EasyUI Demo
- Linux cut用法
- go程序的编译和运行
- 最新开源JavaScript 图表库 ECharts推荐
- Transformer升级之路:Sinusoidal位置编码追根溯源
- 炸金花比牌规则java_陈陈来给你们炸金花的简易纸牌规则教学与心态指导
- 如何查询高考成绩2021年的成绩排位,2020年高考成绩排名怎么查,高考成绩排名是怎么排的...
- java面试宝典2019_Java面试宝典2019完整版.doc
- laplace 偏微分方程 MATLAB help
- springboot+freemarker毕业设计项目错误合集
- java项目目录_Java项目目录解释
- Padavan设置无线中继
- 计算流体力学编程作业matlab,中科大计算流体力学CFD之大作业二.doc
- WHYZOJ-#116[NOIP模拟] czy把妹(区间DP)
- js(jquery)鼠标移入移出事件时,出现闪烁、隐藏显示隐藏显示不停切换的情况
- java中计算一段时间内白天的时间和夜晚的时间
- 使用vs2019用c++创建dll库
- LitJson输出格式化Json字符串
热门文章
- 第四十二篇 面对对象进阶
- Mysql实现企业级日志管理、备份与恢复
- 《OKR源于英特尔和谷歌的目标管理利器》读书笔记
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理(c++实现)...
- 小心使用innerHTML
- IntelliJ IDEA的配置优化
- Uva 11077 Find the Permutation
- 湖南雅礼培训 1.1
- Django 权限管理
- 警惕使用WebClient.DownloadFile(string uri,string filePath)方法