MCPcopy Create free account
hub / github.com/creatale/node-dv / cross

Method cross

deps/opencv/modules/core/src/matrix.cpp:2066–2098  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2064
2065
2066cv::Mat cv::Mat::cross(InputArray _m) const
2067{
2068 Mat m = _m.getMat();
2069 int tp = type(), d = CV_MAT_DEPTH(tp);
2070 CV_Assert( dims <= 2 && m.dims <= 2 && size() == m.size() && tp == m.type() &&
2071 ((rows == 3 && cols == 1) || (cols*channels() == 3 && rows == 1)));
2072 Mat result(rows, cols, tp);
2073
2074 if( d == CV_32F )
2075 {
2076 const float *a = (const float*)data, *b = (const float*)m.data;
2077 float* c = (float*)result.data;
2078 size_t lda = rows > 1 ? step/sizeof(a[0]) : 1;
2079 size_t ldb = rows > 1 ? m.step/sizeof(b[0]) : 1;
2080
2081 c[0] = a[lda] * b[ldb*2] - a[lda*2] * b[ldb];
2082 c[1] = a[lda*2] * b[0] - a[0] * b[ldb*2];
2083 c[2] = a[0] * b[ldb] - a[lda] * b[0];
2084 }
2085 else if( d == CV_64F )
2086 {
2087 const double *a = (const double*)data, *b = (const double*)m.data;
2088 double* c = (double*)result.data;
2089 size_t lda = rows > 1 ? step/sizeof(a[0]) : 1;
2090 size_t ldb = rows > 1 ? m.step/sizeof(b[0]) : 1;
2091
2092 c[0] = a[lda] * b[ldb*2] - a[lda*2] * b[ldb];
2093 c[1] = a[lda*2] * b[0] - a[0] * b[ldb*2];
2094 c[2] = a[0] * b[ldb] - a[lda] * b[0];
2095 }
2096
2097 return result;
2098}
2099
2100
2101////////////////////////////////////////// reduce ////////////////////////////////////////////

Callers 1

cvCrossProductFunction · 0.45

Calls 6

typeFunction · 0.50
sizeFunction · 0.50
channelsFunction · 0.50
getMatMethod · 0.45
sizeMethod · 0.45
typeMethod · 0.45

Tested by

no test coverage detected