OpenCV(十):图像缩放、翻转、拼接的介绍与使用

简介: OpenCV(十):图像缩放、翻转、拼接的介绍与使用



(1)图像缩放:resize()

使用 cv2.resize() 函数可以实现图像的缩放。你需要指定目标图像的大小或缩放比例以及插值方法。

void cv::resize ( InputArraysrc

OutputArray dst,

Size   dsize,

double   fx,

double    fy,

int           interpolation = INTER LINEAR(双线性插值)

  • src:输入图像。
  • dst:输出图像,图像的数据类型与src相同。
  • dsize:输出图像的尺寸。
  • fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2。
  • fy:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2。
  • interpolation:差值方法的标志。

以下是常用的 interpolation 参数及其描述:

  1. cv2.INTER_NEAREST:最近邻插值
  • 这是一种最简单的插值方法,它根据目标位置附近的最近一个已知像素的值来估算新的像素值。速度很快,但可能会导致块状的图像效果,特别是在放大图像时。
  1. cv2.INTER_LINEAR:双线性插值
  • 双线性插值考虑了目标位置附近的四个最近已知像素的值,然后根据距离和权重进行插值计算。这通常提供比最近邻插值更平滑的结果。
  1. cv2.INTER_CUBIC:双三次插值
  • 双三次插值使用目标位置附近的16个最近已知像素,根据距离和权重进行插值。它可以提供更高质量的图像,但计算开销较大。
  1. cv2.INTER_LANCZOS4:Lanczos 插值
  • Lanczos 插值是一种高质量的插值方法,它使用一个较大的像素邻域来进行插值。它通常用于需要高质量图像的情况,但计算成本更高。
  1. cv2.INTER_AREA:像素区域重采样
  • 像素区域重采样是一种在图像缩小时常用的插值方法,它会根据目标位置附近的像素区域的平均值来计算新的像素值。这可以减少图像的模糊程度。

例子:

       

       (原图)                                (gray)

Mat gray;
cvtColor(image,gray,COLOR_BGR2GRAY);
Mat smallmg,bigImg0,bigImg1,bigImg2;
resize(gray,smallmg,Size(15,15),0,0,INTER_AREA);//先将图像缩小
resize(smallmg,bigImg0,Size(30,30),0,0,INTER_NEAREST);//最近邻插值
resize(smallmg,bigImg1,Size(30,30),0,0,INTER_LINEAR);//双线性插值
resize(smallmg,bigImg2,Size(30,30),0,0,INTER_CUBIC);//双三次插值

(smallmg)              (bigImg0)               (bigImg1)            (bigImg2)

(2)图像翻转: flip()

使用 cv2.flip() 函数可以实现图像的翻转。你需要指定图像和翻转方向(水平、垂直或同时水平和垂直)。

void cv::flip ( InputArray     src,

OutputArray dst,

int                 flipCode

  • src:输入图像
  • dst: 输出图像,与src具有相同的大小和数据类型以及通道数。
  • flipCode: 翻转方式标志,当 flipCode 的值大于0时,图像将在水平方向上进行翻转,即左右镜像。 当 flipCode 的值为 0 时,图像将在垂直方向上进行翻转,即上下镜像。 当 flipCode 的值小于0时,图像将在水平和垂直方向上同时进行翻转,即左右上下镜像。

例子:

Mat img_x,img_y,img_xy;
flip(gray,img_x,0);//沿x轴对称
flip(gray,img_y,1);//沿y轴对称
flip(gray,img_xy,-1);//沿x轴对称,再沿y轴对称

   (img_x)                               (img_y)                    (img_xy)

(3)图像拼接:hconcat() 和vconcat()

图像拼接通常涉及将多个图像在水平或垂直方向上连接起来,创建一个更大的图像。使用 cv2.hconcat() 和 cv2.vconcat() 函数可以在水平和垂直方向上进行图像拼接。

void cv::hconcat ( InputArray    src1,

InputArray  src2,

OutputArray dst

void cv::vconcat ( InputArray  src1,

InputArray  src2,

OutputArray   dst

  • src1:第一个需要连接的Mat类矩阵。
  • src2:第二个需要连接的Mat类矩阵,与第一个参数具有相同的宽度、数据类型和通道数。
  • dst:连接后的Mat类矩阵。

例子:

//图像横向连接
Mat imgh,imgv;
hconcat(img_x,img_y,imgh);
//图像竖向连接
vconcat(img_x,img_y,imgv);

 

      (imgh)                                                                          (imgv)

目录
相关文章
|
20天前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
180 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
44 4
|
2月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
20天前
|
计算机视觉 Python
Opencv学习笔记(四):如何通过cv2或者通过matplotlib来将多张图拼接成一张图输出
这篇文章介绍了如何使用OpenCV和matplotlib将多张图像拼接成一张图进行输出,并比较了两者的效果和使用注意事项。
45 0
Opencv学习笔记(四):如何通过cv2或者通过matplotlib来将多张图拼接成一张图输出
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
3月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
95 1
|
5月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
145 1
|
5月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
72 1
|
5月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
81 0
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。