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 用指定内容替换指定内容,可以指定次数 ...
随机推荐
- python之对象基础
目录 面向对象 1. 面向过程编程的优缺点 2. 面向对象编程的优缺点 3. 类 类和函数的区别 什么是类 现实世界中先有对象,后有类 python中先有类,再有对象 对象 如何实例化一个对象 对象属 ...
- 解决请求中的post、get乱码问题以及响应的乱码问题
post: get: response:
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:除了屏幕阅读器外,其他设备上隐藏元素
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Pycharm设置默认HTML模板
Pycharm设置默认HTML模板 Bootstrap导入链接 <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/ ...
- java并发AtomicReference
java并发AtomicReference AtomicReference的作用 已经介绍过AtomicInteger,AtomicIntegerArray,AtomicReference是针对对象的 ...
- 五、生产者消费者模型_ThreadLocal
1.生产者消费者模型作用和示例如下:1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率 ,这是生产者消费者模型最重要的作用2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者 ...
- windows环境变量引发的血案
最近重装了系统,决心使用Anaconda来管理python包和虚拟环境.在完成一系列配置后,运行程序,发现老是报错 D:\Anaconda3\envs\jobnote>python E:\wor ...
- 解题报告:luogu P5536 【XR-3】核心城市
题目链接:P5536 [XR-3]核心城市 这题是某次月赛题. 这题我完全是看标签猜的. 优先选择直径中点即可,这里重要的是互通,很容易想到用堆维护可选的,预处理直径和距叶节点距离即可(最近),实质上 ...
- 使用redis集群中遇到的错误
一. 上述错误的原因: 1.在redis服务器上关闭防火墙 2.可能是host写错了 上述错误的原因: 配置文件中jedisClient代表的是单机版的redis,但是在类中转化的时候转化的是集群版
- 为什么Fun函数能够执行
#include<stdio.h> #include<windows.h> void Fun() { printf("Kali-Team\n"); } in ...