文章目录
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之常用图像操作函数说明(转)的更多相关文章

  1. MATLAB 常用形态学操作函数

    常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...

  2. [转载]c++常用字符串操作函数

    原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...

  3. Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍

    本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...

  4. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  5. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  6. opencv学习笔记——图像缩放函数resize

    opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...

  7. QT textbroswer textedite Qlist的常用的操作函数

    Textbrowser: 一.添加函数 1.insertPlainText():这个函数特别好用,括号里面的参数是QString,可以用QString(“%1%2”).arg(QString变量).a ...

  8. C语言的常用字符串操作函数(一)

    一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...

  9. python字符串 列表 元组 字典相关操作函数总结

    1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...

随机推荐

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:设置元素为 display:block 并居中显示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 新闻网大数据实时分析可视化系统项目——7、Kafka分布式集群部署

    Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spa ...

  3. 契约精神、尊重规则、SOP,对制造业来说是蜜糖还是毒药?

    契约精神.尊重规则.执行SOP,这些词儿都天然带有光环,也有很多相关的好故事,全球范围内的企业家都对其推崇备至,摆出一副虔诚教徒的模样,事实上,缺乏契约精神.不遵守规则比之缺乏资本.丢掉订单更加不可接 ...

  4. 原生JS获取所有标签的数量并统计每个标签的数量

    <script type="text/javascript"> var tags = document.getElementsByTagName('*'); var t ...

  5. Tornado -- 7 - 查询结果

    查询结果 查询结果总结: 条件查询 多表查询

  6. 第1节 IMPALA:4、5、linux磁盘的挂载和上传压缩包并解压

    第二步:开机之后进行磁盘挂载 分区,格式化,挂载新磁盘 磁盘挂载 df -lh fdisk -l 开始分区 fdisk /dev/sdb   这个命令执行后依次输 n  p  1  回车  回车  w ...

  7. 苹果vs中国竞争者:瘦死的骆驼比马大?

    前不久,苹果调整2019年第一财季的营收指引,预计第一季度毛利率为38%,相关收入大约为55亿美元,全年总体营收约为840亿美元,运营开支约为87亿美元.针对2019年的运营状况,库克亲自给投资者写了 ...

  8. OBU设备非接触式读卡方案:SI522

    传统收费站将成历史!全部转为ETC系统 当高速人工收费已经成为我们驾驶出行的习惯后,我们发现,高速人工收费带来低效率.长等待以及落后性等缺点逐渐给人们出行带来不便.伴随着我国汽车保有量的逐年递增,高速 ...

  9. shell-Startup-Files

    shell-Startup-Files 1. 相关阅读 2. 主流shell 3. shell实例类型 4. Shell启动文件的必要元素 4.1 路径: 命令路径, 4.2 提示符 5. 主流she ...

  10. php 文件缓存 include vs serialize vs json_encode

    大神:http://techblog.procurios.nl/k/news/view/34972/14863/cache-a-large-array-json-serialize-or-var_ex ...