OpenCV 4.5.3(日本語機械翻訳)
モジュール | クラス | 型定義 | 列挙型 | 関数
Core functionality

モジュール

Basic structures
C structures and operations
Operations on arrays
Asynchronous API
XML/YAML Persistence
Clustering
Utility and system functions and macros
OpenGL interoperability
Intel IPP Asynchronous C/C++ Converters
Optimization Algorithms
DirectX interoperability
Eigen support
OpenCL support
Intel VA-API/OpenCL (CL-VA) interoperability
Hardware Acceleration Layer
Parallel Processing

クラス

class cv::BufferPoolController
class cv::DualQuat< _Tp >
class cv::QuatEnum
class cv::Quat< _Tp >

型定義

using cv::DualQuatd = DualQuat< double >
using cv::DualQuatf = DualQuat< float >
using cv::Quatd = Quat< double >
using cv::Quatf = Quat< float >

列挙型

enum cv::CovarFlags {
cv::COVAR_SCRAMBLED = 0 , cv::COVAR_NORMAL = 1 , cv::COVAR_USE_AVG = 2 , cv::COVAR_SCALE = 4 ,
cv::COVAR_ROWS = 8 , cv::COVAR_COLS = 16
}
共分散フラグ[【詳解】(英語]
enum cv::QuatAssumeType { cv::QUAT_ASSUME_NOT_UNIT , cv::QUAT_ASSUME_UNIT }
単位クオータニオンフラグ[【詳解】(英語]

関数

CV_EXPORTS void cv::swap (Mat &a, Mat &b)
2つの行列を入れ替える
CV_EXPORTS void cv::swap (UMat &a, UMat &b)
template<typename _Tp >
std::ostream & cv::operator<< (std::ostream &, const DualQuat< _Tp > &)
template<typename _Tp >
std::ostream & cv::operator<< (std::ostream &, const Quat< _Tp > &)
template<typename T >
Quat< T > cv::inv (const Quat< T > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
template<typename T >
Quat< T > cv::sinh (const Quat< T > &q)
template<typename T >
Quat< T > cv::cosh (const Quat< T > &q)
template<typename T >
Quat< T > cv::tanh (const Quat< T > &q)
template<typename T >
Quat< T > cv::sin (const Quat< T > &q)
template<typename T >
Quat< T > cv::cos (const Quat< T > &q)
template<typename T >
Quat< T > cv::tan (const Quat< T > &q)
template<typename T >
Quat< T > cv::asinh (const Quat< T > &q)
template<typename T >
Quat< T > cv::acosh (const Quat< T > &q)
template<typename T >
Quat< T > cv::atanh (const Quat< T > &q)
template<typename T >
Quat< T > cv::asin (const Quat< T > &q)
template<typename T >
Quat< T > cv::acos (const Quat< T > &q)
template<typename T >
Quat< T > cv::atan (const Quat< T > &q)
template<typename T >
Quat< T > cv::power (const Quat< T > &q, const Quat< T > &p, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
template<typename T >
Quat< T > cv::exp (const Quat< T > &q)
template<typename T >
Quat< T > cv::log (const Quat< T > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
template<typename T >
Quat< T > cv::power (const Quat< T > &q, const T x, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
template<typename T >
Quat< T > cv::crossProduct (const Quat< T > &p, const Quat< T > &q)
template<typename S >
Quat< S > cv::sqrt (const Quat< S > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
template<typename T >
Quat< T > cv::operator* (const T, const Quat< T > &)
template<typename T >
Quat< T > cv::operator* (const Quat< T > &, const T)
template<typename S >
std::ostream & cv::operator<< (std::ostream &, const Quat< S > &)

詳解

列挙型詳解

CovarFlags

共分散フラグ

列挙値
covar_scrambled

出力共分散行列は次のように計算されます。

\[\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...],\]

共分散行列は nsamples x nsamples となります。このような特異な共分散行列は,非常に大きなベクトルの集合を高速にPCAこのような特異な共分散行列は、非常に大きなベクトルの集合を高速に処理するために使用されます(例えば、顔認識のためのEigenFaces技術を参照)。この「スクランブルされた」行列の固有値は,真の共分散行列の固有値と一致します.真の」固有値は,「スクランブルされた」共分散行列の固有値から簡単に計算できます.

COVAR_NORMAL

出力共分散行列は次のように計算されます。

\[\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...] \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T,\]

covar は,各入力ベクトルの要素数の合計と同じサイズの正方行列になります.の1つだけを指定する必要があります。COVAR_SCRAMBLEDおよびCOVAR_NORMALを1つだけ指定する必要があります。

COVAR_USE_AVG

このフラグが指定された場合,この関数は入力ベクトルからmeanを計算せず,代わりに渡されたmeanベクトルを利用します.これは,meanが事前に計算されている場合や,共分散行列が部分的に計算されている場合に便利です.この場合、meanは、入力されたベクトルのサブセットの平均ベクトルではなく、セット全体の平均ベクトルとなります。

COVAR_SCALE

このフラグが指定された場合,共分散行列はスケーリングされます.normal "モードでは,スケールは1./nsamplesとなります.スクランブルモードでは,スケールは各入力ベクトルの要素数の逆数となります.デフォルトでは(フラグが指定されていない場合),共分散行列はスケーリングされません(scale=1).

COVAR_ROWS

このフラグが指定された場合,すべての入力ベクトルは samples 行列の行として格納されます. この場合,mean は1行のベクトルでなければいけません.

COVAR_COLS

このフラグが指定された場合,すべての入力ベクトルは samples 行列の列として格納されます. この場合,meanは1列のベクトルでなければなりません.

QuatAssumeType

単位クオータニオンフラグ

列挙値
quat_assume_not_unit

このフラグはデフォルトで指定されています。このフラグが指定されている場合,入力四元数は単位四元数ではないと見なされます.計算速度は QUAT_ASSUME_UNIT フラグよりも遅くなりますが、計算の正しさを保証することができます。

QUAT_ASSUME_UNIT

このフラグが指定された場合、入力四元数は単位四元数であると見なされ、いくつかの計算を節約できます。ただし、単位四元数を指定せずにこのフラグを指定した場合、結果のプログラムの正しさは保証されません。

関数詳解

acos()

template<typename T >
Quat< T > cv::acos ( const Quat< T > & q )

\[\arccos(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arccosh(q)\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
acos(q);
Definition: quaternion.hpp:211
Quat< T > acos(const Quat< T > &q)

acosh()

template<typename T >
Quat< T > cv::acosh ( const Quat< T > & q )

\[arccosh(q) = \ln(q + \sqrt{q^2 - 1})\]

.

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
acosh(q);
Quat< T > acosh(const Quat< T > &q)

asin()

template<typename T >
Quat< T > cv::asin ( const Quat< T > & q )

\[\arcsin(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arcsinh(q\frac{\boldsymbol{v}}{||\boldsymbol{v}||})\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
asin(q);
Quat< T > asin(const Quat< T > &q)

asinh()

template<typename T >
Quat< T > cv::asinh ( const Quat< T > & q )

\[arcsinh(q) = \ln(q + \sqrt{q^2 + 1})\]

.

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
asinh(q);
Quat< T > asinh(const Quat< T > &q)

atan()

template<typename T >
Quat< T > cv::atan ( const Quat< T > & q )

\[\arctan(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arctanh(q\frac{\boldsymbol{v}}{||\boldsymbol{v}||})\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
atan(q);
Quat< T > atan(const Quat< T > &q)

atanh()

template<typename T >
Quat< T > cv::atanh ( const Quat< T > & q )

\[arctanh(q) = \frac{\ln(q + 1) - \ln(1 - q)}{2}\]

.

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
atanh(q);
Quat< T > atanh(const Quat< T > &q)

cos()

template<typename T >
Quat< T > cv::cos ( const Quat< T > & q )

\[\cos(p) = \cos(w) * \cosh(||\boldsymbol{v}||) - \sin(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sinh(||\boldsymbol{v}||)\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
cos(q);
Quat< T > cos(const Quat< T > &q)

cosh()

template<typename T >
Quat< T > cv::cosh ( const Quat< T > & q )

\[\cosh(p) = \cosh(w) * \cos(||\boldsymbol{v}||) + \sinh(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sin(||\boldsymbol{v}||)\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
cosh(q);
Quat< T > cosh(const Quat< T > &q)

crossProduct()

template<typename T >
Quat< T > cv::crossProduct ( const Quat< T > & p,
const Quat< T > & q
)

\[p \times q = \frac{pq- qp}{2}\]

\[p \times q = \boldsymbol{u} \times \boldsymbol{v}\]

\[p \times q = (cz-dy)i + (dx-bz)j + (by-xc)k \]

例えば

Quatd q{1,2,3,4};
Quatd p{5,6,7,8};
crossProduct(p, q);
Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)

exp()

template<typename T >
Quat< T > cv::exp ( const Quat< T > & q )

\[\exp(q) = e^w (\cos||\boldsymbol{v}||+ \frac{v}{||\boldsymbol{v}||})\sin||\boldsymbol{v}||\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば、以下のようになります。

Quatd q{1,2,3,4};
cout << exp(q) << endl;
CV_EXPORTS_W void exp(InputArray src, OutputArray dst)
Calculates the exponent of every array element.

inv()

template<typename T >
Quat< T > cv::inv ( const Quat< T > & q,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT
)
引数
q 四元演算子。
assumeUnit QUAT_ASSUME_UNITの場合、quaternion qは単位quaternionであるとみなされ、この関数はいくつかの計算を節約します。

例えば

Quatd q(1,2,3,4);
inv(q);
q = q.normalize();
inv(q, assumeUnit);//This assumeUnit means p is a unit quaternion
QuatAssumeType
Unit quaternion flag
Definition: quaternion.hpp:39
@ QUAT_ASSUME_UNIT
Definition: quaternion.hpp:52
DualQuat< T > inv(const DualQuat< T > &dq, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:187

log()

template<typename T >
Quat< T > cv::log ( const Quat< T > & q,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT
)

\[\ln(q) = \ln||q|| + \frac{\boldsymbol{v}}{||\boldsymbol{v}||}\arccos\frac{w}{||q||}.\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。
assumeUnit QUAT_ASSUME_UNITが指定された場合、qは単位四元数であるとみなされ、この関数はいくつかの計算を行います。

例えば

Quatd q1{1,2,3,4};
cout << log(q1) << endl;
CV_EXPORTS_W void log(InputArray src, OutputArray dst)
Calculates the natural logarithm of every array element.

power() [1/2]

template<typename T >
Quat< T > cv::power ( const Quat< T > & q,
const Quat< T > & p,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT
)

\[p^q = e^{q\ln(p)}.\]

引数
p べき乗関数の基底四元数です。
q 累乗関数の四元数のインデックス。
assumeUnit QUAT_ASSUME_UNITの場合、quaternion$p$は単位四元数であるとみなし、この関数はいくつかの計算を節約します。

例えば

Quatd p(1,2,3,4);
Quatd q(5,6,7,8);
power(p, q);
p = p.normalize();
power(p, q, assumeUnit); //This assumeUnit means p is a unit quaternion
DualQuat< T > power(const DualQuat< T > &dq, const T t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:358

power() [2/2]

template<typename T >
Quat< T > cv::power ( const Quat< T > & q,
const T x,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT
)

\[q^x = ||q||(cos(x\theta) + \boldsymbol{u}sin(x\theta))).\]

引数
q 四元演算子。
x 累乗の指数
assumeUnit QUAT_ASSUME_UNITの場合、quaternion qは単位quaternionであるとみなされ、この関数はいくつかの計算を節約します。

例えば

Quatd q(1,2,3,4);
power(q, 2.0);
double angle = CV_PI;
Vec3d axis{0, 0, 1};
Quatd q1 = Quatd::createFromAngleAxis(angle, axis); //generate a unit quat by axis and angle
power(q1, 2.0, assumeUnit);//This assumeUnit means q1 is a unit quaternion.
static Quat< _Tp > createFromAngleAxis(const _Tp angle, const Vec< _Tp, 3 > &axis)
from an angle, axis. Axis will be normalized in this function. And it generates
Template class for short numerical vectors, a partial case of Matx
Definition: matx.hpp:342
覚え書き
インデックスの型は、四元数と同じでなければなりません。

sin()

template<typename T >
Quat< T > cv::sin ( const Quat< T > & q )

\[\sin(p) = \sin(w) * \cosh(||\boldsymbol{v}||) + \cos(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sinh(||\boldsymbol{v}||)\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
sin(q);
Quat< T > sin(const Quat< T > &q)

sinh()

template<typename T >
Quat< T > cv::sinh ( const Quat< T > & q )

\[\sinh(p) = \sin(w)\cos(||\boldsymbol{v}||) + \cosh(w)\frac{v}{||\boldsymbol{v}||}\sin||\boldsymbol{v}||\]

ここで$\boldsymbol{v} = [x, y, z].$

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
sinh(q);
Quat< T > sinh(const Quat< T > &q)

swap()

CV_EXPORTS void cv::swap ( UMat & a,
UMat & b
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

tan()

template<typename T >
Quat< T > cv::tan ( const Quat< T > & q )

\[\tan(q) = \frac{\sin(q)}{\cos(q)}.\]

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
tan(q);
Quat< T > tan(const Quat< T > &q)

tanh()

template<typename T >
Quat< T > cv::tanh ( const Quat< T > & q )

\[ \tanh(q) = \frac{\sinh(q)}{\cosh(q)}.\]

引数
q 四元演算子。

例えば

Quatd q(1,2,3,4);
tanh(q);
Quat< T > tanh(const Quat< T > &q)
参照
sinh,cosh