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

Function cmp_

deps/opencv/modules/core/src/arithm.cpp:2137–2194  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2135{
2136
2137template<typename T> static void
2138cmp_(const T* src1, size_t step1, const T* src2, size_t step2,
2139 uchar* dst, size_t step, Size size, int code)
2140{
2141 step1 /= sizeof(src1[0]);
2142 step2 /= sizeof(src2[0]);
2143 if( code == CMP_GE || code == CMP_LT )
2144 {
2145 std::swap(src1, src2);
2146 std::swap(step1, step2);
2147 code = code == CMP_GE ? CMP_LE : CMP_GT;
2148 }
2149
2150 if( code == CMP_GT || code == CMP_LE )
2151 {
2152 int m = code == CMP_GT ? 0 : 255;
2153 for( ; size.height--; src1 += step1, src2 += step2, dst += step )
2154 {
2155 int x = 0;
2156 #if CV_ENABLE_UNROLLED
2157 for( ; x <= size.width - 4; x += 4 )
2158 {
2159 int t0, t1;
2160 t0 = -(src1[x] > src2[x]) ^ m;
2161 t1 = -(src1[x+1] > src2[x+1]) ^ m;
2162 dst[x] = (uchar)t0; dst[x+1] = (uchar)t1;
2163 t0 = -(src1[x+2] > src2[x+2]) ^ m;
2164 t1 = -(src1[x+3] > src2[x+3]) ^ m;
2165 dst[x+2] = (uchar)t0; dst[x+3] = (uchar)t1;
2166 }
2167 #endif
2168 for( ; x < size.width; x++ )
2169 dst[x] = (uchar)(-(src1[x] > src2[x]) ^ m);
2170 }
2171 }
2172 else if( code == CMP_EQ || code == CMP_NE )
2173 {
2174 int m = code == CMP_EQ ? 0 : 255;
2175 for( ; size.height--; src1 += step1, src2 += step2, dst += step )
2176 {
2177 int x = 0;
2178 #if CV_ENABLE_UNROLLED
2179 for( ; x <= size.width - 4; x += 4 )
2180 {
2181 int t0, t1;
2182 t0 = -(src1[x] == src2[x]) ^ m;
2183 t1 = -(src1[x+1] == src2[x+1]) ^ m;
2184 dst[x] = (uchar)t0; dst[x+1] = (uchar)t1;
2185 t0 = -(src1[x+2] == src2[x+2]) ^ m;
2186 t1 = -(src1[x+3] == src2[x+3]) ^ m;
2187 dst[x+2] = (uchar)t0; dst[x+3] = (uchar)t1;
2188 }
2189 #endif
2190 for( ; x < size.width; x++ )
2191 dst[x] = (uchar)(-(src1[x] == src2[x]) ^ m);
2192 }
2193 }
2194}

Callers 5

cmp8sFunction · 0.85
cmp16uFunction · 0.85
cmp32sFunction · 0.85
cmp32fFunction · 0.85
cmp64fFunction · 0.85

Calls 1

swapFunction · 0.70

Tested by

no test coverage detected