OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
图 API: 图像和通道合成函数

详细描述

gapi_colorconvert

函数

GMat cv::gapi::concatHor (const GMat &src1, const GMat &src2)
 对给定矩阵进行水平连接。
 
GMat cv::gapi::concatHor (const std::vector< GMat > &v)
 
GMat cv::gapi::concatVert (const GMat &src1, const GMat &src2)
 对给定矩阵执行垂直连接。
 
GMat cv::gapi::concatVert (const std::vector< GMat > &v)
 
GMat cv::gapi::convertTo (const GMat &src, int rdepth, double alpha=1, double beta=0)
 将矩阵转换为另一种数据深度,并可选择缩放。
 
GFrame cv::gapi::copy (const GFrame &in)
 创建输入帧的副本。请注意,此副本可能不是真实的(未复制实际数据)。当图形输入需要直接传递到输出时(例如在流模式下),请使用此函数来维护图形契约。
 
GMat cv::gapi::copy (const GMat &in)
 创建输入图像的副本。请注意,此副本可能不是真实的(未复制实际数据)。当图形输入需要直接传递到输出时(例如在流模式下),请使用此函数来维护图形契约。
 
GMat cv::gapi::crop (const GMat &src, const Rect &rect)
 裁剪二维矩阵。
 
GMat cv::gapi::flip (const GMat &src, int flipCode)
 围绕垂直、水平或两个轴翻转二维矩阵。
 
GMat cv::gapi::LUT (const GMat &src, const Mat &lut)
 对矩阵执行查找表转换。
 
GMat cv::gapi::merge3 (const GMat &src1, const GMat &src2, const GMat &src3)
 从3个单通道矩阵创建一个3通道矩阵。
 
GMat cv::gapi::merge4 (const GMat &src1, const GMat &src2, const GMat &src3, const GMat &src4)
 将 4 个单通道矩阵合并为一个 4 通道矩阵。
 
GMat cv::gapi::normalize (const GMat &src, double alpha, double beta, int norm_type, int ddepth=-1)
 对数组的范数或值范围进行归一化。
 
GMat cv::gapi::remap (const GMat &src, const Mat &map1, const Mat &map2, int interpolation, int borderMode=BORDER_CONSTANT, const Scalar &borderValue=Scalar())
 对图像应用通用几何变换。
 
GMat cv::gapi::resize (const GMat &src, const Size &dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)
 调整图像大小。
 
GMatP cv::gapi::resizeP (const GMatP &src, const Size &dsize, int interpolation=cv::INTER_LINEAR)
 调整平面图像大小。
 
std::tuple< GMat, GMat, GMatcv::gapi::split3 (const GMat &src)
 将3通道矩阵分成3个单通道矩阵。
 
std::tuple< GMat, GMat, GMat, GMatcv::gapi::split4 (const GMat &src)
 将一个4通道矩阵分割成4个单通道矩阵。
 
GMat cv::gapi::warpAffine (const GMat &src, const Mat &M, const Size &dsize, int flags=cv::INTER_LINEAR, int borderMode=cv::BORDER_CONSTANT, const Scalar &borderValue=Scalar())
 对图像应用仿射变换。
 
GMat cv::gapi::warpPerspective (const GMat &src, const Mat &M, const Size &dsize, int flags=cv::INTER_LINEAR, int borderMode=cv::BORDER_CONSTANT, const Scalar &borderValue=Scalar())
 对图像应用透视变换。
 

函数文档

◆ concatHor() [1/2]

GMat cv::gapi::concatHor ( const GMat & src1,
const GMat & src2 )
Python
cv.gapi.concatHor(src1, src2) -> retval
cv.gapi.concatHor(v) -> retval

#include <opencv2/gapi/core.hpp>

对给定矩阵进行水平连接。

此函数将两个 GMat 矩阵(具有相同行数)水平连接起来。

GMat A = { 1, 4,
2, 5,
3, 6 };
GMat B = { 7, 10,
8, 11,
9, 12 };
GMat C = gapi::concatHor(A, B);
//C
//[1, 4, 7, 10;
// 2, 5, 8, 11;
// 3, 6, 9, 12]
GMat 类表示图中的图像或张量数据。
定义 gmat.hpp:68
GMat concatHor(const GMat &src1, const GMat &src2)
对给定矩阵进行水平连接。

输出矩阵的行数和深度必须与 src1 和 src2 相同,且列数等于 src1 和 src2 的列数之和。支持的矩阵数据类型为 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1

注意
函数文本ID为 "org.opencv.imgproc.transform.concatHor"
参数
src1用于水平连接的第一个输入矩阵。
src2用于水平连接的第二个输入矩阵。
另请参见
concatVert

◆ concatHor() [2/2]

GMat cv::gapi::concatHor ( const std::vector< GMat > & v)
Python
cv.gapi.concatHor(src1, src2) -> retval
cv.gapi.concatHor(v) -> retval

#include <opencv2/gapi/core.hpp>

这是一个重载成员函数,为方便起见而提供。它与上述函数仅在接受的参数方面有所不同。此函数水平连接给定数量的 GMat 矩阵(具有相同列数)。输出矩阵的列数和深度必须与输入矩阵相同,且行数等于所有输入矩阵的行数之和。

参数
v要水平连接的输入矩阵向量。

◆ concatVert() [1/2]

GMat cv::gapi::concatVert ( const GMat & src1,
const GMat & src2 )
Python
cv.gapi.concatVert(src1, src2) -> retval
cv.gapi.concatVert(v) -> retval

#include <opencv2/gapi/core.hpp>

对给定矩阵执行垂直连接。

此函数将两个 GMat 矩阵(具有相同列数)垂直连接起来。

GMat A = { 1, 7,
2, 8,
3, 9 };
GMat B = { 4, 10,
5, 11,
6, 12 };
GMat C = gapi::concatVert(A, B);
//C
//[1, 7;
// 2, 8;
// 3, 9;
// 4, 10;
// 5, 11;
// 6, 12]
GMat concatVert(const GMat &src1, const GMat &src2)
对给定矩阵执行垂直连接。

输出矩阵的列数和深度必须与 src1 和 src2 相同,且行数等于 src1 和 src2 的行数之和。支持的矩阵数据类型为 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1

注意
函数文本ID为 "org.opencv.imgproc.transform.concatVert"
参数
src1用于垂直连接的第一个输入矩阵。
src2用于垂直连接的第二个输入矩阵。
另请参见
concatHor

◆ concatVert() [2/2]

GMat cv::gapi::concatVert ( const std::vector< GMat > & v)
Python
cv.gapi.concatVert(src1, src2) -> retval
cv.gapi.concatVert(v) -> retval

#include <opencv2/gapi/core.hpp>

这是一个重载成员函数,为方便起见而提供。它与上述函数仅在接受的参数方面有所不同。此函数垂直连接给定数量的 GMat 矩阵(具有相同列数)。输出矩阵的列数和深度必须与输入矩阵相同,且行数等于所有输入矩阵的行数之和。

参数
v要垂直连接的输入矩阵向量。

◆ convertTo()

GMat cv::gapi::convertTo ( const GMat & src,
int rdepth,
double alpha = 1,
double beta = 0 )
Python
cv.gapi.convertTo(src, rdepth[, alpha[, beta]]) -> retval

#include <opencv2/gapi/core.hpp>

将矩阵转换为另一种数据深度,并可选择缩放。

此方法将源像素值转换为目标数据深度。最后应用 saturate_cast<> 以避免可能的溢出。

\[m(x,y) = saturate \_ cast<rType>( \alpha (*this)(x,y) + \beta )\]

输出矩阵的尺寸必须与输入矩阵相同。

注意
函数文本ID为 "org.opencv.core.transform.convertTo"
参数
src要转换的输入矩阵。
rdepth所需的输出矩阵深度,或者,由于通道数与输入相同,因此是深度;如果 rdepth 为负,则输出矩阵将与输入具有相同的深度。
alpha可选的比例因子。
beta添加到缩放值的可选增量。

◆ copy() [1/2]

GFrame cv::gapi::copy ( const GFrame & in)
Python
cv.gapi.copy(in_) -> retval

#include <opencv2/gapi/streaming/format.hpp>

创建输入帧的副本。请注意,此副本可能不是真实的(未复制实际数据)。当图形输入需要直接传递到输出时(例如在流模式下),请使用此函数来维护图形契约。

注意
函数文本ID为 "org.opencv.streaming.copy"
参数
in输入帧
返回
输入的副本

◆ copy() [2/2]

GMat cv::gapi::copy ( const GMat & in)
Python
cv.gapi.copy(in_) -> retval

#include <opencv2/gapi/streaming/format.hpp>

创建输入图像的副本。请注意,此副本可能不是真实的(未复制实际数据)。当图形输入需要直接传递到输出时(例如在流模式下),请使用此函数来维护图形契约。

注意
函数文本ID为 "org.opencv.streaming.copy"
参数
in输入图像
返回
输入的副本

◆ crop()

GMat cv::gapi::crop ( const GMat & src,
const Rect & rect )
Python
cv.gapi.crop(src, rect) -> retval

#include <opencv2/gapi/core.hpp>

裁剪二维矩阵。

此函数通过给定的 cv::Rect 裁剪矩阵。

输出矩阵必须与输入矩阵具有相同的深度,大小由给定矩形大小指定。

注意
函数文本ID为 "org.opencv.core.transform.crop"
参数
src输入矩阵。
rect用于裁剪矩阵的矩形。
另请参见
resize

◆ flip()

GMat cv::gapi::flip ( const GMat & src,
int flipCode )
Python
cv.gapi.flip(src, flipCode) -> retval

#include <opencv2/gapi/core.hpp>

围绕垂直、水平或两个轴翻转二维矩阵。

此函数以三种不同方式之一翻转矩阵(行和列索引从0开始):

\[\texttt{dst} _{ij} = \left\{ \begin{array}{l l} \texttt{src} _{\texttt{src.rows}-i-1,j} & if\; \texttt{flipCode} = 0 \\ \texttt{src} _{i, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} > 0 \\ \texttt{src} _{ \texttt{src.rows} -i-1, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} < 0 \\ \end{array} \right.\]

使用此函数的示例场景如下:图像垂直翻转 (flipCode == 0) 以在左上角和左下角图像原点之间切换。这是Microsoft Windows* 操作系统中视频处理的典型操作。图像水平翻转,随后进行水平移位和绝对差值计算,以检查垂直轴对称性 (flipCode > 0)。图像同时进行水平和垂直翻转,随后进行移位和绝对差值计算,以检查中心对称性 (flipCode < 0)。反转点数组的顺序 (flipCode > 0 或 flipCode == 0)。输出图像必须与输入图像具有相同的深度,大小应与给定的 flipCode 匹配。

注意
函数文本ID为 "org.opencv.core.transform.flip"
参数
src输入矩阵。
flipCode指定如何翻转数组的标志;0表示绕x轴翻转,正值(例如1)表示绕y轴翻转。负值(例如-1)表示绕两个轴翻转。
另请参见
remap

◆ LUT()

GMat cv::gapi::LUT ( const GMat & src,
const Mat & lut )
Python
cv.gapi.LUT(src, lut) -> retval

#include <opencv2/gapi/core.hpp>

对矩阵执行查找表转换。

函数 LUT 用查找表中的值填充输出矩阵。条目的索引取自输入矩阵。也就是说,该函数按如下方式处理 src 的每个元素:

\[\texttt{dst} (I) \leftarrow \texttt{lut(src(I))}\]

支持的矩阵数据类型为 CV_8UC1。输出矩阵与 src 具有相同的大小和通道数,并与 lut 具有相同的深度。

注意
函数文本ID为 "org.opencv.core.transform.LUT"
参数
src8位元素的输入矩阵。
lut包含256个元素的查找表;在多通道输入数组的情况下,该表应具有单个通道(在这种情况下,所有通道使用相同的表)或与输入矩阵相同的通道数。

◆ merge3()

GMat cv::gapi::merge3 ( const GMat & src1,
const GMat & src2,
const GMat & src3 )
Python
cv.gapi.merge3(src1, src2, src3) -> retval

#include <opencv2/gapi/core.hpp>

从3个单通道矩阵创建一个3通道矩阵。

此函数合并多个矩阵以生成单个多通道矩阵。也就是说,输出矩阵的每个元素将是输入矩阵元素的串联,其中第 i 个输入矩阵的元素被视为 mv[i].channels() 元素向量。输出矩阵必须是 CV_8UC3 类型。

函数 split3 执行相反的操作。

注意
  • 函数文本ID为 "org.opencv.core.transform.merge3"
参数
src1要合并的第一个输入 CV_8UC1 矩阵。
src2要合并的第二个输入 CV_8UC1 矩阵。
src3要合并的第三个输入 CV_8UC1 矩阵。
另请参见
merge4, split4, split3

◆ merge4()

GMat cv::gapi::merge4 ( const GMat & src1,
const GMat & src2,
const GMat & src3,
const GMat & src4 )
Python
cv.gapi.merge4(src1, src2, src3, src4) -> retval

#include <opencv2/gapi/core.hpp>

将 4 个单通道矩阵合并为一个 4 通道矩阵。

此函数合并多个矩阵以生成单个多通道矩阵。也就是说,输出矩阵的每个元素将是输入矩阵元素的串联,其中第 i 个输入矩阵的元素被视为 mv[i].channels() 元素向量。输出矩阵必须是 CV_8UC4 类型。

函数 split4 执行相反的操作。

注意
  • 函数文本ID为 "org.opencv.core.transform.merge4"
参数
src1要合并的第一个输入 CV_8UC1 矩阵。
src2要合并的第二个输入 CV_8UC1 矩阵。
src3要合并的第三个输入 CV_8UC1 矩阵。
src4要合并的第四个输入 CV_8UC1 矩阵。
另请参见
merge3, split4, split3

◆ normalize()

GMat cv::gapi::normalize ( const GMat & src,
double alpha,
double beta,
int norm_type,
int ddepth = -1 )
Python
cv.gapi.normalize(src, alpha, beta, norm_type[, ddepth]) -> retval

#include <opencv2/gapi/core.hpp>

对数组的范数或值范围进行归一化。

此函数对输入数组元素进行归一化、缩放和移位,以使

\[\| \texttt{dst} \| _{L_p}= \texttt{alpha}\]

(其中 p=Inf、1 或 2)当 normType 分别为 NORM_INF、NORM_L1 或 NORM_L2 时;或者使得

\[\min _I \texttt{dst} (I)= \texttt{alpha} , \, \, \max _I \texttt{dst} (I)= \texttt{beta}\]

当 normType=NORM_MINMAX 时(仅适用于密集数组)。

注意
函数文本ID为 "org.opencv.core.normalize"
参数
src输入数组。
alpha要归一化的范数值或在范围归一化情况下的下限。
beta范围归一化情况下的上限;不用于范数归一化。
norm_type归一化类型(参见 cv::NormTypes)。
ddepth当为负时,输出数组与 src 具有相同的类型;否则,它与 src 具有相同的通道数,并且深度为 ddepth。
另请参见
norm, Mat::convertTo

◆ remap()

GMat cv::gapi::remap ( const GMat & src,
const Mat & map1,
const Mat & map2,
int interpolation,
int borderMode = BORDER_CONSTANT,
const Scalar & borderValue = Scalar() )
Python
cv.gapi.remap(src, map1, map2, interpolation[, borderMode[, borderValue]]) -> retval

#include <opencv2/gapi/core.hpp>

对图像应用通用几何变换。

此函数使用指定的映射转换源图像

\[\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\]

其中非整数坐标的像素值使用可用的插值方法之一计算。\(map_x\) 和 \(map_y\) 可以分别编码为 \(map_1\) 和 \(map_2\) 中的单独浮点映射,或 \(map_1\) 中交错的 \((x,y)\) 浮点映射,或使用 convertMaps 创建的定点映射。您可能希望从浮点表示转换为定点表示的原因是它们可以产生更快的(2倍)重映射操作。在转换的情况下,\(map_1\) 包含对 (cvFloor(x), cvFloor(y)),\(map_2\) 包含插值系数表中的索引。输出图像的尺寸和深度必须与输入图像相同。

注意
  • 函数文本ID为 "org.opencv.core.transform.remap"
  • 由于当前的实现限制,输入和输出图像的大小应小于 32767x32767。
参数
src源图像。
map1第一个映射,可以是 (x,y) 点或仅 x 值,类型为 CV_16SC2, CV_32FC1, 或 CV_32FC2。
map2第二个映射,y 值,类型为 CV_16UC1, CV_32FC1, 或无(如果 map1 是 (x,y) 点则为空映射)。
interpolation插值方法(参见 cv::InterpolationFlags)。此函数不支持 INTER_AREAINTER_LINEAR_EXACT 方法。
borderMode像素外推法(参见 cv::BorderTypes)。当 borderMode=BORDER_TRANSPARENT 时,表示目标图像中与源图像中的“异常值”对应的像素不会被函数修改。
borderValue常量边界情况下使用的值。默认值为 0。

◆ resize()

GMat cv::gapi::resize ( const GMat & src,
const Size & dsize,
double fx = 0,
double fy = 0,
int interpolation = INTER_LINEAR )
Python
cv.gapi.resize(src, dsize[, fx[, fy[, interpolation]]]) -> retval

#include <opencv2/gapi/imgproc.hpp>

调整图像大小。

此函数将图像 src 调整为指定的大小(缩小或放大)。

输出图像的大小将是 dsize(当 dsize 非零时)或根据 src.size()、fx 和 fy 计算的大小;输出的深度与 src 相同。

如果您想调整 src 的大小以适应预创建的 dst,您可以按如下方式调用函数:

// 显式指定 dsize=dst.size();fx 和 fy 将从中计算。
resize(src, dst, dst.size(), 0, 0, interpolation);
GMat resize(const GMat &src, const Size &dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)
调整图像大小。

如果您想将图像在每个方向上缩小2倍,您可以这样调用函数:

// 指定 fx 和 fy,让函数计算目标图像大小。
resize(src, dst, Size(), 0.5, 0.5, interpolation);
Size2i Size
定义 types.hpp:370

缩小图像时,通常使用 cv::INTER_AREA 插值效果最佳,而放大图像时,通常使用 cv::INTER_CUBIC(慢)或 cv::INTER_LINEAR(更快但效果仍可接受)插值效果最佳。

注意
函数文本ID为 "org.opencv.imgproc.transform.resize"
参数
src输入图像。
dsize输出图像大小;如果它等于零,则计算为

\[\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\]

dsize 或 fx 和 fy 必须都非零。
fx沿水平轴的缩放因子;当它等于0时,计算方式为

\[\texttt{(double)dsize.width/src.cols}\]

fy沿垂直轴的缩放因子;当它等于0时,计算方式为

\[\texttt{(double)dsize.height/src.rows}\]

interpolation插值方法,参见 cv::InterpolationFlags
另请参见
warpAffine, warpPerspective, remap, resizeP

◆ resizeP()

GMatP cv::gapi::resizeP ( const GMatP & src,
const Size & dsize,
int interpolation = cv::INTER_LINEAR )

#include <opencv2/gapi/imgproc.hpp>

调整平面图像大小。

此函数将图像 src 调整为指定的大小(缩小或放大)。平面图像内存布局是三个连续的内存平面,因此图像高度应为 plane_height*plane_number,图像类型为 CV_8UC1

输出图像的大小将是 dsize,输出的深度与 src 相同。

注意
函数文本ID为 "org.opencv.imgproc.transform.resizeP"
参数
src输入图像,必须是 CV_8UC1 类型;
dsize输出图像大小;
interpolation插值方法,目前仅支持 cv::INTER_LINEAR
另请参见
warpAffine, warpPerspective, remap, resize

◆ split3()

std::tuple< GMat, GMat, GMat > cv::gapi::split3 ( const GMat & src)
Python
cv.gapi.split3(src) -> retval

#include <opencv2/gapi/core.hpp>

将3通道矩阵分成3个单通道矩阵。

此函数将一个3通道矩阵拆分为3个单通道矩阵。

\[\texttt{mv} [c](I) = \texttt{src} (I)_c\]

所有输出矩阵必须是 CV_8UC1 类型。

函数 merge3 执行相反的操作。

注意
  • 函数文本ID为 "org.opencv.core.transform.split3"
参数
src输入 CV_8UC3 矩阵。
另请参见
split4, merge3, merge4

◆ split4()

std::tuple< GMat, GMat, GMat, GMat > cv::gapi::split4 ( const GMat & src)
Python
cv.gapi.split4(src) -> retval

#include <opencv2/gapi/core.hpp>

将一个4通道矩阵分割成4个单通道矩阵。

此函数将一个4通道矩阵拆分为4个单通道矩阵。

\[\texttt{mv} [c](I) = \texttt{src} (I)_c\]

所有输出矩阵必须是 CV_8UC1 类型。

函数 merge4 执行相反的操作。

注意
  • 函数文本ID为 "org.opencv.core.transform.split4"
参数
src输入 CV_8UC4 矩阵。
另请参见
split3, merge3, merge4

◆ warpAffine()

GMat cv::gapi::warpAffine ( const GMat & src,
const Mat & M,
const Size & dsize,
int flags = cv::INTER_LINEAR,
int borderMode = cv::BORDER_CONSTANT,
const Scalar & borderValue = Scalar() )
Python
cv.gapi.warpAffine(src, M, dsize[, flags[, borderMode[, borderValue]]]) -> retval

#include <opencv2/gapi/core.hpp>

对图像应用仿射变换。

函数 warpAffine 使用指定的矩阵变换源图像

\[\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\]

当设置了标志 WARP_INVERSE_MAP 时。否则,转换会首先通过 invertAffineTransform 进行反转,然后替换 M 放入上述公式中。此函数不能原地操作。

参数
src输入图像。
M\(2\times 3\) 变换矩阵。
dsize输出图像的尺寸。
flags插值方法(参见 InterpolationFlags)和可选标志 WARP_INVERSE_MAP 的组合,表示 M 是逆变换 ( \(\texttt{dst}\rightarrow\texttt{src}\) )。
borderMode像素外推方法(参见 BorderTypes);不支持 borderMode=BORDER_TRANSPARENT
borderValue在常数边界情况下使用的值;默认情况下,它是 0。
另请参见
warpPerspective, resize, remap, getRectSubPix, transform

◆ warpPerspective()

GMat cv::gapi::warpPerspective ( const GMat & src,
const Mat & M,
const Size & dsize,
int flags = cv::INTER_LINEAR,
int borderMode = cv::BORDER_CONSTANT,
const Scalar & borderValue = Scalar() )
Python
cv.gapi.warpPerspective(src, M, dsize[, flags[, borderMode[, borderValue]]]) -> retval

#include <opencv2/gapi/core.hpp>

对图像应用透视变换。

函数 warpPerspective 使用指定的矩阵变换源图像

\[\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\]

当设置了标志 WARP_INVERSE_MAP 时。否则,转换会首先通过 invert 进行反转,然后替换 M 放入上述公式中。此函数不能原地操作。

参数
src输入图像。
M\(3\times 3\) 变换矩阵。
dsize输出图像的尺寸。
flags插值方法(INTER_LINEARINTER_NEAREST)和可选标志 WARP_INVERSE_MAP 的组合,该标志将 M 设置为逆变换 ( \(\texttt{dst}\rightarrow\texttt{src}\) )。
borderMode像素外推方法(BORDER_CONSTANTBORDER_REPLICATE)。
borderValue在常量边界情况下使用的值;默认情况下,它等于0。
另请参见
warpAffine, resize, remap, getRectSubPix, perspectiveTransform