feat: 切换后端至PaddleOCR-NCNN,切换工程为CMake
1.项目后端整体迁移至PaddleOCR-NCNN算法,已通过基本的兼容性测试 2.工程改为使用CMake组织,后续为了更好地兼容第三方库,不再提供QMake工程 3.重整权利声明文件,重整代码工程,确保最小化侵权风险 Log: 切换后端至PaddleOCR-NCNN,切换工程为CMake Change-Id: I4d5d2c5d37505a4a24b389b1a4c5d12f17bfa38c
This commit is contained in:
131
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/gen_dict.json
vendored
Normal file
131
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/gen_dict.json
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
{
|
||||
"const_ignore_list": [
|
||||
"CV_TM_.+",
|
||||
"CV_COLORCVT_MAX",
|
||||
"CV_.*Bayer.*",
|
||||
"CV_YUV420(i|sp|p)2.+",
|
||||
"CV_L?(BGRA?|RGBA?|GRAY|XYZ|YCrCb|Luv|Lab|HLS|YUV|HSV)\\d*2L?(BGRA?|RGBA?|GRAY|XYZ|YCrCb|Luv|Lab|HLS|YUV|HSV).*",
|
||||
"CV_FLOODFILL_.+",
|
||||
"CV_ADAPTIVE_THRESH_.+"
|
||||
],
|
||||
"const_private_list" : [
|
||||
"CV_MOP_.+",
|
||||
"CV_INTER_.+",
|
||||
"CV_THRESH_.+",
|
||||
"CV_INPAINT_.+",
|
||||
"CV_RETR_.+",
|
||||
"CV_CHAIN_APPROX_.+"
|
||||
],
|
||||
"missing_consts" : {
|
||||
"Imgproc" : {
|
||||
"private" : [
|
||||
["IPL_BORDER_CONSTANT", 0 ],
|
||||
["IPL_BORDER_REPLICATE", 1 ],
|
||||
["IPL_BORDER_REFLECT", 2 ],
|
||||
["IPL_BORDER_WRAP", 3 ],
|
||||
["IPL_BORDER_REFLECT_101", 4 ],
|
||||
["IPL_BORDER_TRANSPARENT", 5 ]
|
||||
]
|
||||
}
|
||||
},
|
||||
"ManualFuncs" : {
|
||||
"Imgproc" : {
|
||||
"getTextSize" : {
|
||||
"j_code" : [
|
||||
"\n",
|
||||
"// C++: Size getTextSize(const String& text, int fontFace, double fontScale, int thickness, int* baseLine);",
|
||||
"//javadoc:getTextSize(text, fontFace, fontScale, thickness, baseLine)",
|
||||
"public static Size getTextSize(String text, int fontFace, double fontScale, int thickness, int[] baseLine) {",
|
||||
" if(baseLine != null && baseLine.length != 1)",
|
||||
" throw new java.lang.IllegalArgumentException(\"'baseLine' must be 'int[1]' or 'null'.\");",
|
||||
" Size retVal = new Size(n_getTextSize(text, fontFace, fontScale, thickness, baseLine));",
|
||||
" return retVal;",
|
||||
"}",
|
||||
"\n"
|
||||
],
|
||||
"jn_code" : [
|
||||
"private static native double[] n_getTextSize(String text, int fontFace, double fontScale, int thickness, int[] baseLine);\n"
|
||||
],
|
||||
"cpp_code" : [
|
||||
"\n",
|
||||
" // C++: Size getTextSize(const String& text, int fontFace, double fontScale, int thickness, int* baseLine);",
|
||||
" JNIEXPORT jdoubleArray JNICALL Java_org_opencv_imgproc_Imgproc_n_1getTextSize (JNIEnv*, jclass, jstring, jint, jdouble, jint, jintArray);",
|
||||
"\n",
|
||||
" JNIEXPORT jdoubleArray JNICALL Java_org_opencv_imgproc_Imgproc_n_1getTextSize",
|
||||
" (JNIEnv* env, jclass, jstring text, jint fontFace, jdouble fontScale, jint thickness, jintArray baseLine)",
|
||||
" {",
|
||||
" try {",
|
||||
" LOGD(\"Core::n_1getTextSize()\");",
|
||||
" jdoubleArray result;",
|
||||
" result = env->NewDoubleArray(2);",
|
||||
" if (result == NULL) {",
|
||||
" return NULL; /* out of memory error thrown */",
|
||||
" }",
|
||||
"\n",
|
||||
" const char* utf_text = env->GetStringUTFChars(text, 0);",
|
||||
" String n_text( utf_text ? utf_text : \"\" );",
|
||||
" env->ReleaseStringUTFChars(text, utf_text);",
|
||||
"\n",
|
||||
" int _baseLine;",
|
||||
" int* pbaseLine = 0;",
|
||||
"\n",
|
||||
" if (baseLine != NULL)",
|
||||
" pbaseLine = &_baseLine;",
|
||||
"\n",
|
||||
" cv::Size rsize = cv::getTextSize(n_text, (int)fontFace, (double)fontScale, (int)thickness, pbaseLine);",
|
||||
"\n",
|
||||
" jdouble fill[2];",
|
||||
" fill[0]=rsize.width;",
|
||||
" fill[1]=rsize.height;",
|
||||
"\n",
|
||||
" env->SetDoubleArrayRegion(result, 0, 2, fill);",
|
||||
"\n",
|
||||
" if (baseLine != NULL) {",
|
||||
" jint jbaseLine = (jint)(*pbaseLine);",
|
||||
" env->SetIntArrayRegion(baseLine, 0, 1, &jbaseLine);",
|
||||
" }",
|
||||
"\n",
|
||||
" return result;",
|
||||
"\n",
|
||||
" } catch(const cv::Exception& e) {",
|
||||
" LOGD(\"Imgproc::n_1getTextSize() caught cv::Exception: %s\", e.what());",
|
||||
" jclass je = env->FindClass(\"org/opencv/core/CvException\");",
|
||||
" if(!je) je = env->FindClass(\"java/lang/Exception\");",
|
||||
" env->ThrowNew(je, e.what());",
|
||||
" return NULL;",
|
||||
" } catch (...) {",
|
||||
" LOGD(\"Imgproc::n_1getTextSize() caught unknown exception (...)\");",
|
||||
" jclass je = env->FindClass(\"java/lang/Exception\");",
|
||||
" env->ThrowNew(je, \"Unknown exception in JNI code {core::getTextSize()}\");",
|
||||
" return NULL;",
|
||||
" }",
|
||||
" }"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"func_arg_fix" : {
|
||||
"goodFeaturesToTrack" : { "corners" : {"ctype" : "vector_Point"} },
|
||||
"minEnclosingCircle" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"fitEllipse" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"fillPoly" : { "pts" : {"ctype" : "vector_vector_Point"} },
|
||||
"polylines" : { "pts" : {"ctype" : "vector_vector_Point"} },
|
||||
"fillConvexPoly" : { "points" : {"ctype" : "vector_Point"} },
|
||||
"approxPolyDP" : { "curve" : {"ctype" : "vector_Point2f"},
|
||||
"approxCurve" : {"ctype" : "vector_Point2f"} },
|
||||
"arcLength" : { "curve" : {"ctype" : "vector_Point2f"} },
|
||||
"pointPolygonTest" : { "contour" : {"ctype" : "vector_Point2f"} },
|
||||
"minAreaRect" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"getAffineTransform" : { "src" : {"ctype" : "vector_Point2f"},
|
||||
"dst" : {"ctype" : "vector_Point2f"} },
|
||||
"drawContours" : {"contours" : {"ctype" : "vector_vector_Point"} },
|
||||
"findContours" : {"contours" : {"ctype" : "vector_vector_Point"} },
|
||||
"convexityDefects" : { "contour" : {"ctype" : "vector_Point"},
|
||||
"convexhull" : {"ctype" : "vector_int"},
|
||||
"convexityDefects" : {"ctype" : "vector_Vec4i"} },
|
||||
"isContourConvex" : { "contour" : {"ctype" : "vector_Point"} },
|
||||
"convexHull" : { "points" : {"ctype" : "vector_Point"},
|
||||
"hull" : {"ctype" : "vector_int"},
|
||||
"returnPoints" : {"ctype" : ""} }
|
||||
}
|
||||
}
|
242
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/src/java/imgproc+Moments.java
vendored
Normal file
242
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/src/java/imgproc+Moments.java
vendored
Normal file
@ -0,0 +1,242 @@
|
||||
package org.opencv.imgproc;
|
||||
|
||||
//javadoc:Moments
|
||||
public class Moments {
|
||||
|
||||
public double m00;
|
||||
public double m10;
|
||||
public double m01;
|
||||
public double m20;
|
||||
public double m11;
|
||||
public double m02;
|
||||
public double m30;
|
||||
public double m21;
|
||||
public double m12;
|
||||
public double m03;
|
||||
|
||||
public double mu20;
|
||||
public double mu11;
|
||||
public double mu02;
|
||||
public double mu30;
|
||||
public double mu21;
|
||||
public double mu12;
|
||||
public double mu03;
|
||||
|
||||
public double nu20;
|
||||
public double nu11;
|
||||
public double nu02;
|
||||
public double nu30;
|
||||
public double nu21;
|
||||
public double nu12;
|
||||
public double nu03;
|
||||
|
||||
public Moments(
|
||||
double m00,
|
||||
double m10,
|
||||
double m01,
|
||||
double m20,
|
||||
double m11,
|
||||
double m02,
|
||||
double m30,
|
||||
double m21,
|
||||
double m12,
|
||||
double m03)
|
||||
{
|
||||
this.m00 = m00;
|
||||
this.m10 = m10;
|
||||
this.m01 = m01;
|
||||
this.m20 = m20;
|
||||
this.m11 = m11;
|
||||
this.m02 = m02;
|
||||
this.m30 = m30;
|
||||
this.m21 = m21;
|
||||
this.m12 = m12;
|
||||
this.m03 = m03;
|
||||
this.completeState();
|
||||
}
|
||||
|
||||
public Moments() {
|
||||
this(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
public Moments(double[] vals) {
|
||||
set(vals);
|
||||
}
|
||||
|
||||
public void set(double[] vals) {
|
||||
if (vals != null) {
|
||||
m00 = vals.length > 0 ? vals[0] : 0;
|
||||
m10 = vals.length > 1 ? vals[1] : 0;
|
||||
m01 = vals.length > 2 ? vals[2] : 0;
|
||||
m20 = vals.length > 3 ? vals[3] : 0;
|
||||
m11 = vals.length > 4 ? vals[4] : 0;
|
||||
m02 = vals.length > 5 ? vals[5] : 0;
|
||||
m30 = vals.length > 6 ? vals[6] : 0;
|
||||
m21 = vals.length > 7 ? vals[7] : 0;
|
||||
m12 = vals.length > 8 ? vals[8] : 0;
|
||||
m03 = vals.length > 9 ? vals[9] : 0;
|
||||
this.completeState();
|
||||
} else {
|
||||
m00 = 0;
|
||||
m10 = 0;
|
||||
m01 = 0;
|
||||
m20 = 0;
|
||||
m11 = 0;
|
||||
m02 = 0;
|
||||
m30 = 0;
|
||||
m21 = 0;
|
||||
m12 = 0;
|
||||
m03 = 0;
|
||||
mu20 = 0;
|
||||
mu11 = 0;
|
||||
mu02 = 0;
|
||||
mu30 = 0;
|
||||
mu21 = 0;
|
||||
mu12 = 0;
|
||||
mu03 = 0;
|
||||
nu20 = 0;
|
||||
nu11 = 0;
|
||||
nu02 = 0;
|
||||
nu30 = 0;
|
||||
nu21 = 0;
|
||||
nu12 = 0;
|
||||
nu03 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Moments [ " +
|
||||
"\n" +
|
||||
"m00=" + m00 + ", " +
|
||||
"\n" +
|
||||
"m10=" + m10 + ", " +
|
||||
"m01=" + m01 + ", " +
|
||||
"\n" +
|
||||
"m20=" + m20 + ", " +
|
||||
"m11=" + m11 + ", " +
|
||||
"m02=" + m02 + ", " +
|
||||
"\n" +
|
||||
"m30=" + m30 + ", " +
|
||||
"m21=" + m21 + ", " +
|
||||
"m12=" + m12 + ", " +
|
||||
"m03=" + m03 + ", " +
|
||||
"\n" +
|
||||
"mu20=" + mu20 + ", " +
|
||||
"mu11=" + mu11 + ", " +
|
||||
"mu02=" + mu02 + ", " +
|
||||
"\n" +
|
||||
"mu30=" + mu30 + ", " +
|
||||
"mu21=" + mu21 + ", " +
|
||||
"mu12=" + mu12 + ", " +
|
||||
"mu03=" + mu03 + ", " +
|
||||
"\n" +
|
||||
"nu20=" + nu20 + ", " +
|
||||
"nu11=" + nu11 + ", " +
|
||||
"nu02=" + nu02 + ", " +
|
||||
"\n" +
|
||||
"nu30=" + nu30 + ", " +
|
||||
"nu21=" + nu21 + ", " +
|
||||
"nu12=" + nu12 + ", " +
|
||||
"nu03=" + nu03 + ", " +
|
||||
"\n]";
|
||||
}
|
||||
|
||||
protected void completeState()
|
||||
{
|
||||
double cx = 0, cy = 0;
|
||||
double mu20, mu11, mu02;
|
||||
double inv_m00 = 0.0;
|
||||
|
||||
if( Math.abs(this.m00) > 0.00000001 )
|
||||
{
|
||||
inv_m00 = 1. / this.m00;
|
||||
cx = this.m10 * inv_m00;
|
||||
cy = this.m01 * inv_m00;
|
||||
}
|
||||
|
||||
// mu20 = m20 - m10*cx
|
||||
mu20 = this.m20 - this.m10 * cx;
|
||||
// mu11 = m11 - m10*cy
|
||||
mu11 = this.m11 - this.m10 * cy;
|
||||
// mu02 = m02 - m01*cy
|
||||
mu02 = this.m02 - this.m01 * cy;
|
||||
|
||||
this.mu20 = mu20;
|
||||
this.mu11 = mu11;
|
||||
this.mu02 = mu02;
|
||||
|
||||
// mu30 = m30 - cx*(3*mu20 + cx*m10)
|
||||
this.mu30 = this.m30 - cx * (3 * mu20 + cx * this.m10);
|
||||
mu11 += mu11;
|
||||
// mu21 = m21 - cx*(2*mu11 + cx*m01) - cy*mu20
|
||||
this.mu21 = this.m21 - cx * (mu11 + cx * this.m01) - cy * mu20;
|
||||
// mu12 = m12 - cy*(2*mu11 + cy*m10) - cx*mu02
|
||||
this.mu12 = this.m12 - cy * (mu11 + cy * this.m10) - cx * mu02;
|
||||
// mu03 = m03 - cy*(3*mu02 + cy*m01)
|
||||
this.mu03 = this.m03 - cy * (3 * mu02 + cy * this.m01);
|
||||
|
||||
|
||||
double inv_sqrt_m00 = Math.sqrt(Math.abs(inv_m00));
|
||||
double s2 = inv_m00*inv_m00, s3 = s2*inv_sqrt_m00;
|
||||
|
||||
this.nu20 = this.mu20*s2;
|
||||
this.nu11 = this.mu11*s2;
|
||||
this.nu02 = this.mu02*s2;
|
||||
this.nu30 = this.mu30*s3;
|
||||
this.nu21 = this.mu21*s3;
|
||||
this.nu12 = this.mu12*s3;
|
||||
this.nu03 = this.mu03*s3;
|
||||
|
||||
}
|
||||
|
||||
public double get_m00() { return this.m00; }
|
||||
public double get_m10() { return this.m10; }
|
||||
public double get_m01() { return this.m01; }
|
||||
public double get_m20() { return this.m20; }
|
||||
public double get_m11() { return this.m11; }
|
||||
public double get_m02() { return this.m02; }
|
||||
public double get_m30() { return this.m30; }
|
||||
public double get_m21() { return this.m21; }
|
||||
public double get_m12() { return this.m12; }
|
||||
public double get_m03() { return this.m03; }
|
||||
public double get_mu20() { return this.mu20; }
|
||||
public double get_mu11() { return this.mu11; }
|
||||
public double get_mu02() { return this.mu02; }
|
||||
public double get_mu30() { return this.mu30; }
|
||||
public double get_mu21() { return this.mu21; }
|
||||
public double get_mu12() { return this.mu12; }
|
||||
public double get_mu03() { return this.mu03; }
|
||||
public double get_nu20() { return this.nu20; }
|
||||
public double get_nu11() { return this.nu11; }
|
||||
public double get_nu02() { return this.nu02; }
|
||||
public double get_nu30() { return this.nu30; }
|
||||
public double get_nu21() { return this.nu21; }
|
||||
public double get_nu12() { return this.nu12; }
|
||||
public double get_nu03() { return this.nu03; }
|
||||
|
||||
public void set_m00(double m00) { this.m00 = m00; }
|
||||
public void set_m10(double m10) { this.m10 = m10; }
|
||||
public void set_m01(double m01) { this.m01 = m01; }
|
||||
public void set_m20(double m20) { this.m20 = m20; }
|
||||
public void set_m11(double m11) { this.m11 = m11; }
|
||||
public void set_m02(double m02) { this.m02 = m02; }
|
||||
public void set_m30(double m30) { this.m30 = m30; }
|
||||
public void set_m21(double m21) { this.m21 = m21; }
|
||||
public void set_m12(double m12) { this.m12 = m12; }
|
||||
public void set_m03(double m03) { this.m03 = m03; }
|
||||
public void set_mu20(double mu20) { this.mu20 = mu20; }
|
||||
public void set_mu11(double mu11) { this.mu11 = mu11; }
|
||||
public void set_mu02(double mu02) { this.mu02 = mu02; }
|
||||
public void set_mu30(double mu30) { this.mu30 = mu30; }
|
||||
public void set_mu21(double mu21) { this.mu21 = mu21; }
|
||||
public void set_mu12(double mu12) { this.mu12 = mu12; }
|
||||
public void set_mu03(double mu03) { this.mu03 = mu03; }
|
||||
public void set_nu20(double nu20) { this.nu20 = nu20; }
|
||||
public void set_nu11(double nu11) { this.nu11 = nu11; }
|
||||
public void set_nu02(double nu02) { this.nu02 = nu02; }
|
||||
public void set_nu30(double nu30) { this.nu30 = nu30; }
|
||||
public void set_nu21(double nu21) { this.nu21 = nu21; }
|
||||
public void set_nu12(double nu12) { this.nu12 = nu12; }
|
||||
public void set_nu03(double nu03) { this.nu03 = nu03; }
|
||||
}
|
2075
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/ImgprocTest.java
vendored
Normal file
2075
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/ImgprocTest.java
vendored
Normal file
File diff suppressed because it is too large
Load Diff
51
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/MomentsTest.java
vendored
Normal file
51
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/MomentsTest.java
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
package org.opencv.test.imgproc;
|
||||
|
||||
import org.opencv.test.OpenCVTestCase;
|
||||
import org.opencv.core.Core;
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.core.CvType;
|
||||
import org.opencv.core.Scalar;
|
||||
import org.opencv.imgproc.Imgproc;
|
||||
import org.opencv.imgproc.Moments;
|
||||
|
||||
public class MomentsTest extends OpenCVTestCase {
|
||||
|
||||
Mat data;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
data = new Mat(3,3, CvType.CV_8UC1, new Scalar(1));
|
||||
data.row(1).setTo(new Scalar(5));
|
||||
}
|
||||
|
||||
public void testAll() {
|
||||
Moments res = Imgproc.moments(data);
|
||||
assertEquals(res.m00, 21.0, EPS);
|
||||
assertEquals(res.m10, 21.0, EPS);
|
||||
assertEquals(res.m01, 21.0, EPS);
|
||||
assertEquals(res.m20, 35.0, EPS);
|
||||
assertEquals(res.m11, 21.0, EPS);
|
||||
assertEquals(res.m02, 27.0, EPS);
|
||||
assertEquals(res.m30, 63.0, EPS);
|
||||
assertEquals(res.m21, 35.0, EPS);
|
||||
assertEquals(res.m12, 27.0, EPS);
|
||||
assertEquals(res.m03, 39.0, EPS);
|
||||
assertEquals(res.mu20, 14.0, EPS);
|
||||
assertEquals(res.mu11, 0.0, EPS);
|
||||
assertEquals(res.mu02, 6.0, EPS);
|
||||
assertEquals(res.mu30, 0.0, EPS);
|
||||
assertEquals(res.mu21, 0.0, EPS);
|
||||
assertEquals(res.mu12, 0.0, EPS);
|
||||
assertEquals(res.mu03, 0.0, EPS);
|
||||
assertEquals(res.nu20, 0.031746031746031744, EPS);
|
||||
assertEquals(res.nu11, 0.0, EPS);
|
||||
assertEquals(res.nu02, 0.013605442176870746, EPS);
|
||||
assertEquals(res.nu30, 0.0, EPS);
|
||||
assertEquals(res.nu21, 0.0, EPS);
|
||||
assertEquals(res.nu12, 0.0, EPS);
|
||||
assertEquals(res.nu03, 0.0, EPS);
|
||||
}
|
||||
|
||||
}
|
117
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/Subdiv2DTest.java
vendored
Normal file
117
3rdparty/opencv-4.5.4/modules/imgproc/misc/java/test/Subdiv2DTest.java
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
package org.opencv.test.imgproc;
|
||||
|
||||
import org.opencv.core.MatOfFloat6;
|
||||
import org.opencv.core.Point;
|
||||
import org.opencv.core.Rect;
|
||||
import org.opencv.imgproc.Subdiv2D;
|
||||
import org.opencv.test.OpenCVTestCase;
|
||||
|
||||
public class Subdiv2DTest extends OpenCVTestCase {
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
}
|
||||
|
||||
public void testEdgeDstInt() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testEdgeDstIntPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testEdgeOrgInt() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testEdgeOrgIntPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testFindNearestPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testFindNearestPointPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testGetEdge() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testGetEdgeList() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testGetTriangleList() {
|
||||
Subdiv2D s2d = new Subdiv2D( new Rect(0, 0, 50, 50) );
|
||||
s2d.insert( new Point(10, 10) );
|
||||
s2d.insert( new Point(20, 10) );
|
||||
s2d.insert( new Point(20, 20) );
|
||||
s2d.insert( new Point(10, 20) );
|
||||
MatOfFloat6 triangles = new MatOfFloat6();
|
||||
s2d.getTriangleList(triangles);
|
||||
assertEquals(2, triangles.rows());
|
||||
/*
|
||||
int cnt = triangles.rows();
|
||||
float buff[] = new float[cnt*6];
|
||||
triangles.get(0, 0, buff);
|
||||
for(int i=0; i<cnt; i++)
|
||||
Log.d("*****", "["+i+"]: " + // (a.x, a.y) -> (b.x, b.y) -> (c.x, c.y)
|
||||
"("+buff[6*i+0]+","+buff[6*i+1]+")" + "->" +
|
||||
"("+buff[6*i+2]+","+buff[6*i+3]+")" + "->" +
|
||||
"("+buff[6*i+4]+","+buff[6*i+5]+")"
|
||||
);
|
||||
*/
|
||||
}
|
||||
|
||||
public void testGetVertexInt() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testGetVertexIntIntArray() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testGetVoronoiFacetList() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testInitDelaunay() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testInsertListOfPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testInsertPoint() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testLocate() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testNextEdge() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testRotateEdge() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testSubdiv2D() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testSubdiv2DRect() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
public void testSymEdge() {
|
||||
fail("Not yet implemented");
|
||||
}
|
||||
|
||||
}
|
68
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/common/Moments.h
vendored
Normal file
68
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/common/Moments.h
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
//
|
||||
// Moments.h
|
||||
//
|
||||
// Created by Giles Payne on 2019/10/06.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
#import "opencv2/core.hpp"
|
||||
#else
|
||||
#define CV_EXPORTS
|
||||
#endif
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
CV_EXPORTS @interface Moments : NSObject
|
||||
|
||||
@property double m00;
|
||||
@property double m10;
|
||||
@property double m01;
|
||||
@property double m20;
|
||||
@property double m11;
|
||||
@property double m02;
|
||||
@property double m30;
|
||||
@property double m21;
|
||||
@property double m12;
|
||||
@property double m03;
|
||||
|
||||
@property double mu20;
|
||||
@property double mu11;
|
||||
@property double mu02;
|
||||
@property double mu30;
|
||||
@property double mu21;
|
||||
@property double mu12;
|
||||
@property double mu03;
|
||||
|
||||
@property double nu20;
|
||||
@property double nu11;
|
||||
@property double nu02;
|
||||
@property double nu30;
|
||||
@property double nu21;
|
||||
@property double nu12;
|
||||
@property double nu03;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@property(readonly) cv::Moments& nativeRef;
|
||||
#endif
|
||||
|
||||
-(instancetype)initWithM00:(double)m00 m10:(double)m10 m01:(double)m01 m20:(double)m20 m11:(double)m11 m02:(double)m02 m30:(double)m30 m21:(double)m21 m12:(double)m12 m03:(double)m03;
|
||||
|
||||
-(instancetype)init;
|
||||
|
||||
-(instancetype)initWithVals:(NSArray<NSNumber*>*)vals;
|
||||
|
||||
#ifdef __cplusplus
|
||||
+(instancetype)fromNative:(cv::Moments&)moments;
|
||||
#endif
|
||||
|
||||
-(void)set:(NSArray<NSNumber*>*)vals;
|
||||
-(void)completeState;
|
||||
-(NSString *)description;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
304
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/common/Moments.mm
vendored
Normal file
304
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/common/Moments.mm
vendored
Normal file
@ -0,0 +1,304 @@
|
||||
//
|
||||
// Moments.mm
|
||||
//
|
||||
// Created by Giles Payne on 2019/10/09.
|
||||
//
|
||||
|
||||
#import "Moments.h"
|
||||
|
||||
@implementation Moments {
|
||||
cv::Moments native;
|
||||
}
|
||||
|
||||
-(cv::Moments&)nativeRef {
|
||||
return native;
|
||||
}
|
||||
|
||||
- (double)m00 {
|
||||
return native.m00;
|
||||
}
|
||||
|
||||
- (void)setM00:(double)val {
|
||||
native.m00 = val;
|
||||
}
|
||||
|
||||
- (double)m10 {
|
||||
return native.m10;
|
||||
}
|
||||
|
||||
- (void)setM10:(double)val {
|
||||
native.m10 = val;
|
||||
}
|
||||
|
||||
- (double)m01 {
|
||||
return native.m01;
|
||||
}
|
||||
|
||||
- (void)setM01:(double)val {
|
||||
native.m01 = val;
|
||||
}
|
||||
|
||||
- (double)m20 {
|
||||
return native.m20;
|
||||
}
|
||||
|
||||
- (void)setM20:(double)val {
|
||||
native.m20 = val;
|
||||
}
|
||||
|
||||
- (double)m11 {
|
||||
return native.m11;
|
||||
}
|
||||
|
||||
- (void)setM11:(double)val {
|
||||
native.m11 = val;
|
||||
}
|
||||
|
||||
- (double)m02 {
|
||||
return native.m02;
|
||||
}
|
||||
|
||||
- (void)setM02:(double)val {
|
||||
native.m02 = val;
|
||||
}
|
||||
|
||||
- (double)m30 {
|
||||
return native.m30;
|
||||
}
|
||||
|
||||
- (void)setM30:(double)val {
|
||||
native.m30 = val;
|
||||
}
|
||||
|
||||
- (double)m21 {
|
||||
return native.m21;
|
||||
}
|
||||
|
||||
- (void)setM21:(double)val {
|
||||
native.m21 = val;
|
||||
}
|
||||
|
||||
- (double)m12 {
|
||||
return native.m12;
|
||||
}
|
||||
|
||||
- (void)setM12:(double)val {
|
||||
native.m12 = val;
|
||||
}
|
||||
|
||||
- (double)m03 {
|
||||
return native.m03;
|
||||
}
|
||||
|
||||
- (void)setM03:(double)val {
|
||||
native.m03 = val;
|
||||
}
|
||||
|
||||
- (double)mu20 {
|
||||
return native.mu20;
|
||||
}
|
||||
|
||||
- (void)setMu20:(double)val {
|
||||
native.mu20 = val;
|
||||
}
|
||||
|
||||
- (double)mu11 {
|
||||
return native.mu11;
|
||||
}
|
||||
|
||||
- (void)setMu11:(double)val {
|
||||
native.mu11 = val;
|
||||
}
|
||||
|
||||
- (double)mu02 {
|
||||
return native.mu02;
|
||||
}
|
||||
|
||||
- (void)setMu02:(double)val {
|
||||
native.mu02 = val;
|
||||
}
|
||||
|
||||
- (double)mu30 {
|
||||
return native.mu30;
|
||||
}
|
||||
|
||||
- (void)setMu30:(double)val {
|
||||
native.mu30 = val;
|
||||
}
|
||||
|
||||
- (double)mu21 {
|
||||
return native.mu21;
|
||||
}
|
||||
|
||||
- (void)setMu21:(double)val {
|
||||
native.mu21 = val;
|
||||
}
|
||||
- (double)mu12 {
|
||||
return native.mu12;
|
||||
}
|
||||
|
||||
- (void)setMu12:(double)val {
|
||||
native.mu12 = val;
|
||||
}
|
||||
|
||||
- (double)mu03 {
|
||||
return native.mu03;
|
||||
}
|
||||
|
||||
- (void)setMu03:(double)val {
|
||||
native.mu03 = val;
|
||||
}
|
||||
|
||||
- (double)nu20 {
|
||||
return native.nu20;
|
||||
}
|
||||
|
||||
- (void)setNu20:(double)val {
|
||||
native.nu20 = val;
|
||||
}
|
||||
|
||||
- (double)nu11 {
|
||||
return native.nu11;
|
||||
}
|
||||
|
||||
- (void)setNu11:(double)val {
|
||||
native.nu11 = val;
|
||||
}
|
||||
|
||||
- (double)nu02 {
|
||||
return native.nu02;
|
||||
}
|
||||
|
||||
- (void)setNu02:(double)val {
|
||||
native.nu02 = val;
|
||||
}
|
||||
|
||||
- (double)nu30 {
|
||||
return native.nu30;
|
||||
}
|
||||
|
||||
- (void)setNu30:(double)val {
|
||||
native.nu30 = val;
|
||||
}
|
||||
|
||||
- (double)nu21 {
|
||||
return native.nu21;
|
||||
}
|
||||
|
||||
- (void)setNu21:(double)val {
|
||||
native.nu21 = val;
|
||||
}
|
||||
|
||||
- (double)nu12 {
|
||||
return native.nu12;
|
||||
}
|
||||
|
||||
- (void)setNu12:(double)val {
|
||||
native.nu12 = val;
|
||||
}
|
||||
|
||||
- (double)nu03 {
|
||||
return native.nu03;
|
||||
}
|
||||
|
||||
- (void)setNu03:(double)val {
|
||||
native.nu03 = val;
|
||||
}
|
||||
|
||||
-(instancetype)initWithM00:(double)m00 m10:(double)m10 m01:(double)m01 m20:(double)m20 m11:(double)m11 m02:(double)m02 m30:(double)m30 m21:(double)m21 m12:(double)m12 m03:(double)m03 {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.m00 = m00;
|
||||
self.m10 = m10;
|
||||
self.m01 = m01;
|
||||
self.m20 = m20;
|
||||
self.m11 = m11;
|
||||
self.m02 = m02;
|
||||
self.m30 = m30;
|
||||
self.m21 = m21;
|
||||
self.m12 = m12;
|
||||
self.m03 = m03;
|
||||
[self completeState];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(instancetype)init {
|
||||
return [self initWithM00:0 m10:0 m01:0 m20:0 m11:0 m02:0 m30:0 m21:0 m12:0 m03:0];
|
||||
}
|
||||
|
||||
-(instancetype)initWithVals:(NSArray<NSNumber*>*)vals {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self set:vals];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
+(instancetype)fromNative:(cv::Moments&)moments {
|
||||
return [[Moments alloc] initWithM00:moments.m00 m10:moments.m10 m01:moments.m01 m20:moments.m20 m11:moments.m11 m02:moments.m02 m30:moments.m30 m21:moments.m21 m12:moments.m12 m03:moments.m03];
|
||||
}
|
||||
|
||||
-(void)set:(NSArray<NSNumber*>*)vals {
|
||||
self.m00 = (vals != nil && vals.count > 0) ? vals[0].doubleValue : 0;
|
||||
self.m10 = (vals != nil && vals.count > 1) ? vals[1].doubleValue : 0;
|
||||
self.m01 = (vals != nil && vals.count > 2) ? vals[2].doubleValue : 0;
|
||||
self.m20 = (vals != nil && vals.count > 3) ? vals[3].doubleValue : 0;
|
||||
self.m11 = (vals != nil && vals.count > 4) ? vals[4].doubleValue : 0;
|
||||
self.m02 = (vals != nil && vals.count > 5) ? vals[5].doubleValue : 0;
|
||||
self.m30 = (vals != nil && vals.count > 6) ? vals[6].doubleValue : 0;
|
||||
self.m21 = (vals != nil && vals.count > 7) ? vals[7].doubleValue : 0;
|
||||
self.m12 = (vals != nil && vals.count > 8) ? vals[8].doubleValue : 0;
|
||||
self.m03 = (vals != nil && vals.count > 9) ? vals[9].doubleValue : 0;
|
||||
[self completeState];
|
||||
}
|
||||
|
||||
-(void)completeState {
|
||||
double cx = 0, cy = 0;
|
||||
double mu20, mu11, mu02;
|
||||
double inv_m00 = 0.0;
|
||||
|
||||
if (abs(self.m00) > 0.00000001) {
|
||||
inv_m00 = 1. / self.m00;
|
||||
cx = self.m10 * inv_m00;
|
||||
cy = self.m01 * inv_m00;
|
||||
}
|
||||
|
||||
// mu20 = m20 - m10*cx
|
||||
mu20 = self.m20 - self.m10 * cx;
|
||||
// mu11 = m11 - m10*cy
|
||||
mu11 = self.m11 - self.m10 * cy;
|
||||
// mu02 = m02 - m01*cy
|
||||
mu02 = self.m02 - self.m01 * cy;
|
||||
|
||||
self.mu20 = mu20;
|
||||
self.mu11 = mu11;
|
||||
self.mu02 = mu02;
|
||||
|
||||
// mu30 = m30 - cx*(3*mu20 + cx*m10)
|
||||
self.mu30 = self.m30 - cx * (3 * mu20 + cx * self.m10);
|
||||
mu11 += mu11;
|
||||
// mu21 = m21 - cx*(2*mu11 + cx*m01) - cy*mu20
|
||||
self.mu21 = self.m21 - cx * (mu11 + cx * self.m01) - cy * mu20;
|
||||
// mu12 = m12 - cy*(2*mu11 + cy*m10) - cx*mu02
|
||||
self.mu12 = self.m12 - cy * (mu11 + cy * self.m10) - cx * mu02;
|
||||
// mu03 = m03 - cy*(3*mu02 + cy*m01)
|
||||
self.mu03 = self.m03 - cy * (3 * mu02 + cy * self.m01);
|
||||
|
||||
|
||||
double inv_sqrt_m00 = sqrt(abs(inv_m00));
|
||||
double s2 = inv_m00*inv_m00, s3 = s2*inv_sqrt_m00;
|
||||
|
||||
self.nu20 = self.mu20*s2;
|
||||
self.nu11 = self.mu11*s2;
|
||||
self.nu02 = self.mu02*s2;
|
||||
self.nu30 = self.mu30*s3;
|
||||
self.nu21 = self.mu21*s3;
|
||||
self.nu12 = self.mu12*s3;
|
||||
self.nu03 = self.mu03*s3;
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [NSString stringWithFormat:@"Moments [ \nm00=%lf, \nm10=%lf, m01=%lf, \nm20=%lf, m11=%lf, m02=%lf, \nm30=%lf, m21=%lf, m12=%lf, m03=%lf, \nmu20=%lf, mu11=%lf, mu02=%lf, \nmu30=%lf, mu21=%lf, mu12=%lf, mu03=%lf, \nnu20=%lf, nu11=%lf, nu02=%lf, \nnu30=%lf, nu21=%lf, nu12=%lf, nu03=%lf, \n]", self.m00, self.m10, self.m01, self.m20, self.m11, self.m02, self.m30, self.m21, self.m12, self.m03, self.mu20, self.mu11, self.mu02, self.mu30, self.mu21, self.mu12, self.mu03, self.nu20, self.nu11, self.nu02, self.nu30, self.nu21, self.nu12, self.nu03];
|
||||
}
|
||||
|
||||
@end
|
132
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/gen_dict.json
vendored
Normal file
132
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/gen_dict.json
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
{
|
||||
"AdditionalImports" : {
|
||||
"Imgproc" : [ "\"imgproc/bindings.hpp\"" ]
|
||||
},
|
||||
"enum_ignore_list" : [
|
||||
"MorphShapes_c",
|
||||
"SmoothMethod_c"
|
||||
],
|
||||
"module_imports": ["Size2i"],
|
||||
"const_ignore_list": [
|
||||
"CV_TM_.+",
|
||||
"CV_COLORCVT_MAX",
|
||||
"CV_.*Bayer.*",
|
||||
"CV_YUV420(i|sp|p)2.+",
|
||||
"CV_L?(BGRA?|RGBA?|GRAY|XYZ|YCrCb|Luv|Lab|HLS|YUV|HSV)\\d*2L?(BGRA?|RGBA?|GRAY|XYZ|YCrCb|Luv|Lab|HLS|YUV|HSV).*",
|
||||
"CV_FLOODFILL_.+",
|
||||
"CV_ADAPTIVE_THRESH_.+",
|
||||
"CV_DIST_.+",
|
||||
"CV_HOUGH_.+",
|
||||
"CV_CONTOURS_MATCH_.+",
|
||||
"CV_COMP_.+"
|
||||
],
|
||||
"const_private_list" : [
|
||||
"CV_MOP_.+",
|
||||
"CV_INTER_.+",
|
||||
"CV_THRESH_.+",
|
||||
"CV_INPAINT_.+",
|
||||
"CV_RETR_.+",
|
||||
"CV_CHAIN_APPROX_.+"
|
||||
],
|
||||
"missing_consts" : {
|
||||
"Imgproc" : {
|
||||
"private" : [
|
||||
["IPL_BORDER_CONSTANT", 0 ],
|
||||
["IPL_BORDER_REPLICATE", 1 ],
|
||||
["IPL_BORDER_REFLECT", 2 ],
|
||||
["IPL_BORDER_WRAP", 3 ],
|
||||
["IPL_BORDER_REFLECT_101", 4 ],
|
||||
["IPL_BORDER_TRANSPARENT", 5 ]
|
||||
]
|
||||
}
|
||||
},
|
||||
"func_arg_fix" : {
|
||||
"Imgproc" : {
|
||||
"goodFeaturesToTrack" : { "corners" : {"ctype" : "vector_Point"} },
|
||||
"minEnclosingCircle" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"fitEllipse" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"fillPoly" : { "pts" : {"ctype" : "vector_vector_Point"},
|
||||
"lineType" : {"ctype" : "LineTypes"}},
|
||||
"polylines" : { "pts" : {"ctype" : "vector_vector_Point"},
|
||||
"lineType" : {"ctype" : "LineTypes"} },
|
||||
"fillConvexPoly" : { "points" : {"ctype" : "vector_Point"},
|
||||
"lineType" : {"ctype" : "LineTypes"} },
|
||||
"approxPolyDP" : { "curve" : {"ctype" : "vector_Point2f"},
|
||||
"approxCurve" : {"ctype" : "vector_Point2f"} },
|
||||
"arcLength" : { "curve" : {"ctype" : "vector_Point2f"} },
|
||||
"pointPolygonTest" : { "contour" : {"ctype" : "vector_Point2f"} },
|
||||
"minAreaRect" : { "points" : {"ctype" : "vector_Point2f"} },
|
||||
"getAffineTransform" : { "src" : {"ctype" : "vector_Point2f"},
|
||||
"dst" : {"ctype" : "vector_Point2f"} },
|
||||
"drawContours" : { "contours" : {"ctype" : "vector_vector_Point"},
|
||||
"lineType" : {"ctype" : "LineTypes"} },
|
||||
"findContours" : { "contours" : {"ctype" : "vector_vector_Point"},
|
||||
"mode" : {"ctype" : "RetrievalModes"},
|
||||
"method" : {"ctype" : "ContourApproximationModes"} },
|
||||
"convexityDefects" : { "contour" : {"ctype" : "vector_Point"},
|
||||
"convexhull" : {"ctype" : "vector_int"},
|
||||
"convexityDefects" : {"ctype" : "vector_Vec4i"} },
|
||||
"isContourConvex" : { "contour" : {"ctype" : "vector_Point"} },
|
||||
"convexHull" : { "points" : {"ctype" : "vector_Point"},
|
||||
"hull" : {"ctype" : "vector_int"},
|
||||
"returnPoints" : {"ctype" : ""} },
|
||||
"getStructuringElement" : { "shape" : {"ctype" : "MorphShapes"} },
|
||||
"EMD" : {"lowerBound" : {"defval" : "cv::Ptr<float>()"},
|
||||
"distType" : {"ctype" : "DistanceTypes"}},
|
||||
"createLineSegmentDetector" : { "_refine" : {"ctype" : "LineSegmentDetectorModes"}},
|
||||
"compareHist" : { "method" : {"ctype" : "HistCompMethods"}},
|
||||
"matchShapes" : { "method" : {"ctype" : "ShapeMatchModes"}},
|
||||
"threshold" : { "type" : {"ctype" : "ThresholdTypes"}},
|
||||
"connectedComponentsWithStatsWithAlgorithm" : { "ccltype" : {"ctype" : "ConnectedComponentsAlgorithmsTypes"}},
|
||||
"GaussianBlur" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"HoughCircles" : { "method" : {"ctype" : "HoughModes"}},
|
||||
"Laplacian" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"Scharr" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"Sobel" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"adaptiveThreshold" : { "adaptiveMethod" : {"ctype" : "AdaptiveThresholdTypes"},
|
||||
"thresholdType" : {"ctype" : "ThresholdTypes"}},
|
||||
"applyColorMap" : { "colormap" : {"ctype" : "ColormapTypes"}},
|
||||
"arrowedLine" : { "line_type" : {"ctype" : "LineTypes"}},
|
||||
"bilateralFilter" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"blur" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"boxFilter" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"circle" : { "lineType" : {"ctype" : "LineTypes"}},
|
||||
"cornerEigenValsAndVecs" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"cornerHarris" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"cornerMinEigenVal" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"cvtColor" : { "code" : {"ctype" : "ColorConversionCodes"}},
|
||||
"dilate" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"distanceTransformWithLabels" : { "labelType" : {"ctype" : "DistanceTransformLabelTypes"},
|
||||
"distanceType" : {"ctype" : "DistanceTypes"},
|
||||
"maskSize" : {"ctype" : "DistanceTransformMasks"}},
|
||||
"distanceTransform" : { "distanceType" : {"ctype" : "DistanceTypes"},
|
||||
"maskSize" : {"ctype" : "DistanceTransformMasks"}},
|
||||
"drawMarker" : { "markerType" : {"ctype" : "MarkerTypes"},
|
||||
"line_type" : {"ctype" : "LineTypes"}},
|
||||
"ellipse" : { "lineType" : {"ctype" : "LineTypes"}},
|
||||
"erode" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"filter2D" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"fitLine" : { "distType" : {"ctype" : "DistanceTypes"}},
|
||||
"line" : { "lineType" : {"ctype" : "LineTypes"}},
|
||||
"matchTemplate" : { "method" : {"ctype" : "TemplateMatchModes"}},
|
||||
"morphologyEx" : { "op" : {"ctype" : "MorphTypes"},
|
||||
"borderType" : {"ctype" : "BorderTypes"}},
|
||||
"preCornerDetect" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"putText" : { "fontFace" : {"ctype" : "HersheyFonts"},
|
||||
"lineType" : {"ctype" : "LineTypes"}},
|
||||
"pyrDown" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"pyrUp" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"rectangle" : { "lineType" : {"ctype" : "LineTypes"}},
|
||||
"remap" : { "borderMode": {"ctype" : "BorderTypes"}},
|
||||
"sepFilter2D" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"spatialGradient" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"sqrBoxFilter" : { "borderType" : {"ctype" : "BorderTypes"}},
|
||||
"warpAffine" : { "borderMode": {"ctype" : "BorderTypes"}},
|
||||
"warpPerspective" : { "borderMode": {"ctype" : "BorderTypes"}},
|
||||
"getTextSize" : { "fontFace": {"ctype" : "HersheyFonts"}}
|
||||
},
|
||||
"Subdiv2D" : {
|
||||
"(void)insert:(NSArray<Point2f*>*)ptvec" : { "insert" : {"name" : "insertVector"} }
|
||||
}
|
||||
}
|
||||
}
|
1744
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/ImgprocTest.swift
vendored
Normal file
1744
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/ImgprocTest.swift
vendored
Normal file
File diff suppressed because it is too large
Load Diff
42
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/MomentsTest.swift
vendored
Normal file
42
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/MomentsTest.swift
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
//
|
||||
// MomentsTest.swift
|
||||
//
|
||||
// Created by Giles Payne on 2020/02/10.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
import OpenCV
|
||||
|
||||
class MomentsTest: XCTestCase {
|
||||
|
||||
func testAll() {
|
||||
let data = Mat(rows: 3,cols: 3, type: CvType.CV_8UC1, scalar: Scalar(1))
|
||||
data.row(1).setTo(scalar: Scalar(5))
|
||||
let res = Imgproc.moments(array: data)
|
||||
XCTAssertEqual(res.m00, 21.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m10, 21.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m01, 21.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m20, 35.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m11, 21.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m02, 27.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m30, 63.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m21, 35.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m12, 27.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.m03, 39.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu20, 14.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu11, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu02, 6.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu30, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu21, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu12, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.mu03, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu20, 0.031746031746031744, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu11, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu02, 0.013605442176870746, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu30, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu21, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu12, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
XCTAssertEqual(res.nu03, 0.0, accuracy: OpenCVTestCase.EPS);
|
||||
}
|
||||
|
||||
}
|
23
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/Subdiv2DTest.swift
vendored
Normal file
23
3rdparty/opencv-4.5.4/modules/imgproc/misc/objc/test/Subdiv2DTest.swift
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
//
|
||||
// Subdiv2DTest.swift
|
||||
//
|
||||
// Created by Giles Payne on 2020/02/10.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
import OpenCV
|
||||
|
||||
class Subdiv2DTest: OpenCVTestCase {
|
||||
|
||||
func testGetTriangleList() {
|
||||
let s2d = Subdiv2D(rect: Rect(x: 0, y: 0, width: 50, height: 50))
|
||||
s2d.insert(pt: Point2f(x: 10, y: 10))
|
||||
s2d.insert(pt: Point2f(x: 20, y: 10))
|
||||
s2d.insert(pt: Point2f(x: 20, y: 20))
|
||||
s2d.insert(pt: Point2f(x: 10, y: 20))
|
||||
var triangles = [Float6]()
|
||||
s2d.getTriangleList(triangleList: &triangles)
|
||||
XCTAssertEqual(2, triangles.count)
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user