python进阶—OpenCV之常用图像操作函数说明(转)
文章目录
cv2.threshold
cv2.bitwise_and
cv2.bitwise_or
cv2.bitwise_not
cv2.inRange
cv2.resize
cv2.adaptiveThreshold
cv2.warpAffine仿射
cv2.getRotationMatrix2D
cv2.warpPerspective投射
cv2.getAffineTransform
cv2.getPerspectiveTransform
经过近一个月的学习,发现对图像的一些基本操作函数还是理解的不够透彻,因此觉得把一些常用的图像操作函数拿出来加深理解并记录下很有必要,方便以后查询。
cv2.threshold
函数原型:threshold(src, thresh, maxval, type, dst=None)获取二值化图像;一般用于灰度图图像的二值化
函数返回值:ret,dst;该函数有两个返回值,ret是用type为THRESH_OTSU或者THRESH_TRIANGLE方法计算出的阈值;dst是阈值化后的图像
src:输入的待二值化图像
thresh:阈值,可由参数指定;或者由type参数确定计算方法
maxval:像素最大取值
type:THRESH_BINARY、THRESH_BINARY_INV、THRESH_TOZERO、THRESH_TOZERO_INV、THRESH_TRUNC;另外THRESH_OTSU、THRESH_TRIANGLE为阈值计算方法,可与前5个进行|运算后赋值给type参数
THRESH_BINARY:像素值 < thresh,像素值取为0;像素值 > thresh,像素值取为maxval
THRESH_BINARY_INV:像素值 < thresh,像素值取为maxval;像素值 > thresh,像素值取为0
THRESH_TOZERO:像素值 < thresh,像素值取为0;像素值 > thresh,像素值保持不变
THRESH_TOZERO_INV:像素值 < thresh,像素值保持不变;像素值 > thresh,像素值取为0
THRESH_TRUNC:像素值 < thresh,像素值保持不变;像素值 > thresh,像素值取为maxval
THRESH_OTSU:用于具有(图像的像素直方图)双波峰的灰度图像的二值化
THRESH_TRIANGLE:用于具有(图像的像素直方图)单波峰的灰度图像的二值化
cv2.bitwise_and
函数原型:bitwise_and(src1, src2, dst=None, mask=None)
函数返回值:调用时若无mask参数则返回src1 & src2,若存在mask参数,则返回src1 & src2 & mask
src1:输入原图1
src2:输入原图2,src1与src2可以相同也可以不相同,可以是灰度图像也可以是彩色图像
dst:若存在参数时:src1 & src2 或者 src1 & src2 & mask
mask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像
cv2.bitwise_or
函数原型:bitwise_or(src1, src2, dst=None, mask=None)
函数返回值:调用时若无mask参数则返回src1 | src2,若存在mask参数,则返回src1 | src2 | mask
src1:输入原图1
src2:输入原图2,src1与src2可以相同也可以不相同,可以是灰度图像也可以是彩色图像
dst:若存在参数时:src1 | src2 或者 src1 | src2 | mask
mask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像
cv2.bitwise_not
函数原型:bitwise_not(src, dst=None, mask=None)
函数返回值:调用时若无mask参数则返回按位取反回:~src1,若存在mask参数,则先做src1先做按位取反,然后按mask中bit=1的位取反
src1:输入原图1
dst:若存在参数时:与返回值相同
mask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像
cv2.inRange
函数原型:inRange(src, lowerb, upperb, dst=None)
函数返回值:二值图像
src:输入原图,可以为单通道灰度图像,也可以为3通道彩色图像
lowerb:像素值区间下限
upperb:像素值区间上限
dst:若存在参数,则与返回值相同
说明:单通道灰度图像,像素值低于lowerb和高于upperb的部分变成0,lower_red~upper_red之间的值变成255;三通道彩色图像,则每个通道分别与lowerb、upperb比较,然后按照相同办法修改像素值
cv2.resize
函数原型:cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
函数返回值:变换大小后的图像
src:待变换输入原图,可以为单通道灰度图像,也可以为3通道彩色图像
dsize:变换后的图像尺寸,格式:宽高通道;当dsize为0时,它可以通过以下公式计算得出:dsize = Size(round(fxsrc.cols), round(fysrc.rows))
fx - 水平轴上的比例因子。当它为0时,计算公式如下:(double)(dsize.width/src.cols)
fy - 垂直轴上的比例因子。当它为0时,计算公式如下:(double)(dsize.heifht/src.rows)
interpolation - 插值方法
interpolation取值:INTER_NEAREST - 最近邻插值法
interpolation取值:INTER_LINEAR - 双线性插值法(默认)
interpolation取值:INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
interpolation取值:INTER_CUBIC - 基于4x4像素邻域的3次插值法
interpolation取值:INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
注意:参数dsize和参数(fx, fy)不能够同时为0
cv2.adaptiveThreshold
函数原型:cv2.adaptiveThreshold(src, maxval, thresh_type, type, blocksize, C),自适应阈值二值化
函数返回:二值化后的图像
src:输入图像,只能是单通道灰度图像
maxval:当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值,与函数cv2.threshold相同
thresh_type: 阈值的计算方法,包含以下2种类型:cv2.ADAPTIVE_THRESH_MEAN_C; cv2.ADAPTIVE_THRESH_GAUSSIAN_C
type:二值化操作的类型,与固定阈值函数相同,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
blocksize: 图片中分块的大小
C:阈值计算方法中的常数项
cv2.warpAffine仿射
函数原型:cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)
函数返回:仿射变换后的图像
src:输入图像,可以为单通道或彩色图像
M:2*3仿射变换矩阵,矩阵格式[[1, 0, tx], [0, 1, ty]],也可由其它函数获取
dsize:输出图像的大小
dst:仿射变换后的输出图像
flags:插值方法,默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值) cv2.INTER_AREA (区域插值) cv2.INTER_CUBIC(三次样条插值) cv2.INTER_LANCZOS4(Lanczos插值)
borderMode:边界模式,可参照OpenCV第二篇的中的各种border模式
borderValue:边界像素大小
一般在使用前三个参数
cv2.getRotationMatrix2D
函数原型:cv2.getRotationMatrix2D(center, angle, scale)
返回值:返回一个2*3矩阵,主要用于cv2.warpAffine仿射变换
center:旋转中心坐标,是一个元组参数(col, row)
angle:旋转角度,旋转方向,逆时针
scale:方向比例
此函数主要用于获得一个旋转矩阵
cv2.warpPerspective投射
函数原型:cv2.warpPerspective(src, M, dsize, dst, flags, borderMode, borderValue)
函数返回:投射变换后的图像
src:输入图像,可以为单通道或彩色图像
M:3*3投射变换矩阵,可由函数cv2.getPerspectiveTransform获取
dsize:输出图像的大小
dst:仿射变换后的输出图像
flags:插值方法,默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值) cv2.INTER_AREA (区域插值) cv2.INTER_CUBIC(三次样条插值) cv2.INTER_LANCZOS4(Lanczos插值)
borderMode:边界模式,可参照OpenCV第二篇的中的各种border模式
borderValue:边界像素大小
一般在使用前三个参数
cv2.getAffineTransform
函数原型:cv2.getAffineTransform(src, dst)
返回值:仿射变换2*3 矩阵
src:仿射变换原图三角形的三个顶点坐标
dst:仿射变换输出图像三角形的三个顶点坐标
cv2.getPerspectiveTransform
函数原型:cv2.getPerspectiveTransform(src, dst)
返回值:仿射变换3*3 矩阵
src:投射变换原图矩形的4个顶点坐标
dst:投射变换输出图像矩形的4个顶点坐标
---------------------
原文:https://blog.csdn.net/zhaoyun_zzz/article/details/84817916
python进阶—OpenCV之常用图像操作函数说明(转)的更多相关文章
- MATLAB 常用形态学操作函数
常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...
- [转载]c++常用字符串操作函数
原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...
- Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...
- 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)
参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
- opencv学习笔记——图像缩放函数resize
opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...
- QT textbroswer textedite Qlist的常用的操作函数
Textbrowser: 一.添加函数 1.insertPlainText():这个函数特别好用,括号里面的参数是QString,可以用QString(“%1%2”).arg(QString变量).a ...
- C语言的常用字符串操作函数(一)
一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
随机推荐
- Django线上项目后台admin不显示问题
记一次django项目的线上部署错误,django+nginx 一.问题描述 在将django项目部署到阿里云(nginx作为web服务器)上之后发现出现后台管理界面admin不显示样式. 二.问题分 ...
- C. Gas Pipeline DP
C. Gas Pipeline time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Ubuntu 16.04 编译安装&&用dpkg安装--zabbix3.4
编译安装zabbix3.4,官方有教程,但是遇到一些报错: 总结下来,需要安装这些环境: 更新系统: apt update apt upgrade 先装这些: apt-get install libm ...
- (C#)Image.FromFile 方法会锁住文件的原因及可能的解决方法
Image.FromFile 一旦使用后,对应的文件在一直调用其生成的Image对象被Disponse前都不会被解除锁定,这就造成了一个问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等 ...
- jq的链式调用.end();
先上code <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 解决css中display:inline-block的兼容问题
*display:inline; *zoom:1; 不多说,ie6/7直接在元素添加以上的属性即可.
- intel关于spark gc的优化建议
Apache Spark由于其出色的性能.简单的接口和丰富的分析和计算库而获得了广泛的行业应用.与大数据生态系统中的许多项目一样,Spark在Java虚拟机(JVM)上运行.因为Spark可以在内存中 ...
- UVALive 3231 网络流
题目要求给m个任务分配给n个机器,但最后任务量最多的那个机器的任务量尽量少,利用最大流,在最后的汇点那里设置关卡,二分结果,把机器到最终汇点的容量设置为该值,这样就达到题目条件,这样跑最大流 还能把m ...
- C++ Primer Plus 6 笔记(2)
第4章 1.求数组元素个数的一种方法:num=sizeof 数组名/sizeof (元素类型) 2.确定字符串所需的最短数组时,别忘了将结尾的'\0'计算在内.表面可以无,内存必须有. 3.'S'表示 ...
- Vue-cli3与springboot项目整合打包
一.需求 使用前后端分离编写了个小程序,前端使用的是vue-cli3创建的项目,后端使用的是springboot创建的项目,部署的时候一起打包部署,本文对一些细节部分进行了说明. 二 ...