OpenCV4_0 API笔记
目录
- 前言
- 正文
- API
- 1. cv.imread(const String & filename,int flags = IMREAD_COLOR)
- 2. matplotlib.pyplot.imshow(X, cmap=None)
- 3. np.shape
- 4. cv.copyMakeBorder
- 5.cv2.addWeighted( )函数说明
- 6. cv2.resize( )函数说明
- 7. cv.threshold函数的使用
- cv.warpAffine
- cv.getRotationMatrix2D函数
- cv2.GetAffineTransform()
- 参考
前言
有时候总要到处去查这API是啥意思,以及其参数怎么使用,干脆就写一篇博客来记录这些API。
正文
API
1. cv.imread(const String & filename,int flags = IMREAD_COLOR)
- 第一个参数是完整的图像路径。
- 第二个参数是:
cv.IMREAD_COLOR:加载彩色图像。任何图像的透明度都会被忽视。它是默认标志------>1
cv.IMREAD_GRAYSCALE:以灰度模式加载图像----------->0
cv.IMREAD_UNCHANGED:加载图像,包括alpha通道。--------->-1
2. matplotlib.pyplot.imshow(X, cmap=None)
X: 要绘制的图像或数组。
cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。使用比较多的图谱有gray,jet.
REF
3. np.shape
返回图像的行列和通道数
4. cv.copyMakeBorder
code
CV_EXPORTS_W void copyMakeBorder(InputArray src, OutputArray dst,int top, int bottom, int left, int right,int borderType, const Scalar& value = Scalar() );
InputArray src:输入图像
OutputArray dst:输出的图像
int top, int bottom, int left, int right:表示对边界每个方向添加的像素个数,就是边框的粗细程度
int borderType:表示边界的类型
- BORDER_REPLICATE 重复: 就是对边界像素进行复制
- BORDER_REFLECT 反射:对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb 反射
- BORDER_REFLECT_101 反射101: 例子:gfedcb|abcdefgh|gfedcba
- BORDER_WRAP 外包装:cdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT 常量复制:例子:iiiiii|abcdefgh|iiiiiii
value:边界的值
5.cv2.addWeighted( )函数说明
code
cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst
dst = src1 * alpha + src2 * beta + gamma
src1 – first input array. 【第一张图片】
alpha – weight of the first array elements. 【第一张图片的权重】
src2 – second input array of the same size and channel number as src1. 【与第一张大小和通道数相同的图片】
beta – weight of the second array elements. 【第二张图片的权重】
dst – output array that has the same size and number of channels as the input arrays.【输出,python中可以直接将dst放在前面作为输出】
gamma – scalar added to each sum.【加到每个总和上的标量,相当于调亮度】
dtype – optional depth of the output array; when both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth().
6. cv2.resize( )函数说明
code
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
scr:原图
dsize:输出图像尺寸【注意:在一般表示中,我们用 高 × 宽 × 通道。使用cv2.resize()时,参数输入是 宽 × 高 × 通道 ,与以往操作不同,需要注意。】
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法
7. cv.threshold函数的使用
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)
dst:输出图像
thresh:阈值
maxval:dst图像中最大值
type:阈值类型,可以具体类型如下:
cv.warpAffine
API
void cv::warpAffine ( InputArray src,OutputArray dst,InputArray M,Size dsize,int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT,const Scalar & borderValue = Scalar() )
参数解释
. src: 输入图像
. dst: 输出图像,尺寸由dsize指定,图像类型与原图像一致
. M: 2X3的变换矩阵
. dsize: 指定图像输出尺寸
. flags: 插值算法标识符,有默认值INTER_LINEAR,如果插值算法为WARP_INVERSE_MAP, warpAffine函数使用如下矩阵进行图像转换
. borderMode: 边界像素模式,有默认值BORDER_CONSTANT
. borderValue: 边界取值,有默认值Scalar()即0
cv.getRotationMatrix2D函数
code
Mat cv::getRotationMatrix2D ( Point2f center,double angle,double scale )
参数解释
. center: Point2f类型,表示原图像的旋转中心
. angle: double类型,表示图像旋转角度,角度为正则表示逆时针旋转,角度为负表示逆时针旋转(坐标原点是图像左上角)
. scale: 缩放系数
函数计算如下矩阵:
cv2.GetAffineTransform()
仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换需要一个M矩阵,但是由于仿射变换比较复杂,一般直接找很难找到这个矩阵,opencv提供了根据变换前后三个点的对应关系来自动求解M的函数,这个函数就是:
code
M=cv2.GetAffineTransform(src, dst)
src:原始图像中的三个点的坐标
dst:变换后的这三个点对应的坐标
M:根据三个对应点求出的仿射变换矩阵
参考
- OpenCV-Python-Tutorial-中文版20160814.pdf
OpenCV4_0 API笔记
目录
- 前言
- 正文
- API
- 1. cv.imread(const String & filename,int flags = IMREAD_COLOR)
- 2. matplotlib.pyplot.imshow(X, cmap=None)
- 3. np.shape
- 4. cv.copyMakeBorder
- 5.cv2.addWeighted( )函数说明
- 6. cv2.resize( )函数说明
- 7. cv.threshold函数的使用
- cv.warpAffine
- cv.getRotationMatrix2D函数
- cv2.GetAffineTransform()
- 参考
前言
有时候总要到处去查这API是啥意思,以及其参数怎么使用,干脆就写一篇博客来记录这些API。
正文
API
1. cv.imread(const String & filename,int flags = IMREAD_COLOR)
- 第一个参数是完整的图像路径。
- 第二个参数是:
cv.IMREAD_COLOR:加载彩色图像。任何图像的透明度都会被忽视。它是默认标志------>1
cv.IMREAD_GRAYSCALE:以灰度模式加载图像----------->0
cv.IMREAD_UNCHANGED:加载图像,包括alpha通道。--------->-1
2. matplotlib.pyplot.imshow(X, cmap=None)
X: 要绘制的图像或数组。
cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。使用比较多的图谱有gray,jet.
REF
3. np.shape
返回图像的行列和通道数
4. cv.copyMakeBorder
code
CV_EXPORTS_W void copyMakeBorder(InputArray src, OutputArray dst,int top, int bottom, int left, int right,int borderType, const Scalar& value = Scalar() );
InputArray src:输入图像
OutputArray dst:输出的图像
int top, int bottom, int left, int right:表示对边界每个方向添加的像素个数,就是边框的粗细程度
int borderType:表示边界的类型
- BORDER_REPLICATE 重复: 就是对边界像素进行复制
- BORDER_REFLECT 反射:对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb 反射
- BORDER_REFLECT_101 反射101: 例子:gfedcb|abcdefgh|gfedcba
- BORDER_WRAP 外包装:cdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT 常量复制:例子:iiiiii|abcdefgh|iiiiiii
value:边界的值
5.cv2.addWeighted( )函数说明
code
cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst
dst = src1 * alpha + src2 * beta + gamma
src1 – first input array. 【第一张图片】
alpha – weight of the first array elements. 【第一张图片的权重】
src2 – second input array of the same size and channel number as src1. 【与第一张大小和通道数相同的图片】
beta – weight of the second array elements. 【第二张图片的权重】
dst – output array that has the same size and number of channels as the input arrays.【输出,python中可以直接将dst放在前面作为输出】
gamma – scalar added to each sum.【加到每个总和上的标量,相当于调亮度】
dtype – optional depth of the output array; when both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth().
6. cv2.resize( )函数说明
code
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
scr:原图
dsize:输出图像尺寸【注意:在一般表示中,我们用 高 × 宽 × 通道。使用cv2.resize()时,参数输入是 宽 × 高 × 通道 ,与以往操作不同,需要注意。】
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法
7. cv.threshold函数的使用
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)
dst:输出图像
thresh:阈值
maxval:dst图像中最大值
type:阈值类型,可以具体类型如下:
cv.warpAffine
API
void cv::warpAffine ( InputArray src,OutputArray dst,InputArray M,Size dsize,int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT,const Scalar & borderValue = Scalar() )
参数解释
. src: 输入图像
. dst: 输出图像,尺寸由dsize指定,图像类型与原图像一致
. M: 2X3的变换矩阵
. dsize: 指定图像输出尺寸
. flags: 插值算法标识符,有默认值INTER_LINEAR,如果插值算法为WARP_INVERSE_MAP, warpAffine函数使用如下矩阵进行图像转换
. borderMode: 边界像素模式,有默认值BORDER_CONSTANT
. borderValue: 边界取值,有默认值Scalar()即0
cv.getRotationMatrix2D函数
code
Mat cv::getRotationMatrix2D ( Point2f center,double angle,double scale )
参数解释
. center: Point2f类型,表示原图像的旋转中心
. angle: double类型,表示图像旋转角度,角度为正则表示逆时针旋转,角度为负表示逆时针旋转(坐标原点是图像左上角)
. scale: 缩放系数
函数计算如下矩阵:
cv2.GetAffineTransform()
仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换需要一个M矩阵,但是由于仿射变换比较复杂,一般直接找很难找到这个矩阵,opencv提供了根据变换前后三个点的对应关系来自动求解M的函数,这个函数就是:
code
M=cv2.GetAffineTransform(src, dst)
src:原始图像中的三个点的坐标
dst:变换后的这三个点对应的坐标
M:根据三个对应点求出的仿射变换矩阵
参考
- OpenCV-Python-Tutorial-中文版20160814.pdf