OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
Graph 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)
 入力フレームのコピーを作成する。このコピーは実体を伴わない場合がある(実際のデータはコピーされない)ことに注意。グラフの規約を維持するためにこの関数を使用する。たとえばStreamingモードのように、グラフの入力を直接出力へ渡す必要がある場合などである。
 
GMat cv::gapi::copy (const GMat &in)
 入力画像のコピーを作成する。このコピーは実体を伴わない場合がある(実際のデータはコピーされない)ことに注意。グラフの規約を維持するためにこの関数を使用する。たとえばStreamingモードのように、グラフの入力を直接出力へ渡す必要がある場合などである。
 
GMat cv::gapi::crop (const GMat &src, const Rect &rect)
 2次元行列を切り出す。
 
GMat cv::gapi::flip (const GMat &src, int flipCode)
 2D行列を垂直軸、水平軸、またはその両方を中心に反転する。
 
GMat cv::gapi::LUT (const GMat &src, const Mat &lut)
 行列に対してルックアップテーブル変換を行う。
 
GMat cv::gapi::merge3 (const GMat &src1, const GMat &src2, const GMat &src3)
 3つのシングルチャンネル行列から1つの3チャンネル行列を生成する。
 
GMat cv::gapi::merge4 (const GMat &src1, const GMat &src2, const GMat &src3, const GMat &src4)
 4つのシングルチャンネル行列から1つの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>

指定した行列に対して水平方向の連結を適用する。

この関数は2つの 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 class represents image or tensor data in the graph.
Definition gmat.hpp:68
GMat concatHor(const GMat &src1, const GMat &src2)
Applies horizontal concatenation to given matrices.

出力行列は src1 および src2 と同じ行数とビット深度を持ち、列数は src1 と src2 の列数の合計でなければならない。サポートされる行列データ型は CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1

覚え書き
関数のテキストID は "org.opencv.imgproc.transform.concatHor"
引数
src1水平方向の連結の対象とする1つ目の入力行列。
src2水平方向の連結の対象とする2つ目の入力行列。
参照
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>

与えられた行列に対して垂直方向の連結を適用する。

この関数は2つの 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)
Applies vertical concatenation to given matrices.

出力行列は src1 および src2 と同じ列数とビット深度を持ち、行数は src1 と src2 の行数の合計でなければならない。サポートされる行列データ型は CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1

覚え書き
関数のテキストID は "org.opencv.imgproc.transform.concatVert"
引数
src1垂直方向の連結の対象とする1つ目の入力行列。
src2垂直方向の連結の対象とする2つ目の入力行列。
参照
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>

2D 行列を切り出す。

この関数は、指定された 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>

2次元行列を垂直軸・水平軸またはその両方の軸まわりに反転する。

この関数は、3通りのいずれかの方法で行列を反転する(行と列のインデックスは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* OS 上のビデオ処理における典型的な操作である。画像の水平反転に続けて水平方向のシフトと絶対差分の計算を行い、垂直軸に関する対称性を調べる (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ビット要素の入力行列。
lut256要素のルックアップテーブル。マルチチャンネル入力配列の場合、テーブルはシングルチャンネル(この場合すべてのチャンネルに同じテーブルが使われる)か、入力行列と同じチャンネル数を持つ必要がある。

◆ 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枚のシングルチャンネル行列から1枚の3チャンネル行列を生成する。

この関数は、複数の行列をマージして1枚のマルチチャンネル行列を作成する。すなわち、出力行列の各要素は入力行列の要素を連結したものとなり、i番目の入力行列の要素は mv[i].channels() 要素のベクトルとして扱われる。出力行列は CV_8UC3 型でなければならない。

関数 split3 は逆の操作を行う。

覚え書き
  • 関数のテキストID は "org.opencv.core.transform.merge3" である。
引数
src1マージ対象の1つ目の入力 CV_8UC1 行列。
src2マージ対象の2つ目の入力 CV_8UC1 行列。
src3マージ対象の3つ目の入力 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枚のシングルチャンネル行列から1枚の4チャンネル行列を生成する。

この関数は、複数の行列をマージして1枚のマルチチャンネル行列を作成する。すなわち、出力行列の各要素は入力行列の要素を連結したものとなり、i番目の入力行列の要素は mv[i].channels() 要素のベクトルとして扱われる。出力行列は CV_8UC4 型でなければならない。

関数 split4 は逆の操作を行う。

覚え書き
  • 関数のテキストID は "org.opencv.core.transform.merge4" である。
引数
src1マージ対象の1つ目の入力 CV_8UC1 行列。
src2マージ対象の2つ目の入力 CV_8UC1 行列。
src3マージ対象の3つ目の入力 CV_8UC1 行列。
src4マージ対象の4つ目の入力 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}\]

normType がそれぞれ NORM_INF、NORM_L1、または NORM_L2 のとき(ここで p=Inf、1、または 2)。あるいは、次のように正規化する。

\[\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>

画像に一般的な幾何変換を適用する。

関数 remap は、指定されたマップを使って元画像を変換する。

\[\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 値のみのいずれかからなる1つ目のマップで、型は CV_16SC2、CV_32FC1、CV_32FC2 のいずれか。
map2y 値の2つ目のマップで、型はそれぞれ CV_16UC1、CV_32FC1、または none(map1 が (x,y) 点の場合は空のマップ)。
interpolation補間方法(cv::InterpolationFlags を参照)。INTER_AREA および INTER_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 と同じである。

あらかじめ作成された dst に合わせて src をリサイズしたい場合は、次のように関数を呼び出せばよい。

// explicitly specify dsize=dst.size(); fx and fy will be computed from that.
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)
Resizes an image.

各方向に係数2で画像を間引きたい場合は、次のように関数を呼び出せばよい。

// specify fx and fy and let the function compute the destination image size.
resize(src, dst, Size(), 0.5, 0.5, interpolation);
Size2i Size
Definition types.hpp:373

画像を縮小する場合は、一般に cv::INTER_AREA 補間が最も見栄えが良く、画像を拡大する場合は、一般に cv::INTER_CUBIC(低速)または cv::INTER_LINEAR(高速だが十分見栄えが良い)が最も見栄えが良い。

覚え書き
関数のテキストID は "org.opencv.imgproc.transform.resize" である。
引数
src入力画像。
dsize出力画像のサイズ。0 の場合は次のように計算される:

\[\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 を指定されたサイズへ縮小または拡大する。プレーナ画像のメモリレイアウトは、3つのプレーンがメモリ上に連続して並んだものであるため、画像の高さは 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_LINEAR または INTER_NEAREST)と、省略可能なフラグ WARP_INVERSE_MAP の組み合わせ。後者は M を逆変換( \(\texttt{dst}\rightarrow\texttt{src}\) )として設定する。
borderModeピクセル外挿方法(BORDER_CONSTANT または BORDER_REPLICATE)。
borderValue定数境界の場合に使われる値。デフォルトは 0。
参照
warpAffine, resize, remap, getRectSubPix, perspectiveTransform