1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

Merge pull request #18270 from komakai:swift-inout-arrays

This commit is contained in:
Alexander Alekhin
2020-09-06 20:12:15 +00:00
13 changed files with 347 additions and 136 deletions
@@ -12,6 +12,11 @@ public extension ByteVector {
self.init(data:data);
}
convenience init(_ array:[UInt8]) {
let data = array.withUnsafeBufferPointer { Data(buffer: $0) }
self.init(data:data);
}
subscript(index: Int) -> Int8 {
get {
return self.get(index)
@@ -25,6 +30,14 @@ public extension ByteVector {
return ret
}
}
var unsignedArray: [UInt8] {
get {
var ret = Array<UInt8>(repeating: 0, count: data.count/MemoryLayout<UInt8>.stride)
_ = ret.withUnsafeMutableBytes { data.copyBytes(to: $0) }
return ret
}
}
}
extension ByteVector : Sequence {
+64 -21
View File
@@ -112,7 +112,14 @@
"Point": {
"objc_type": "Point2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Point2i fromNative:%(n)s]"
"from_cpp": "[Point2i fromNative:%(n)s]",
"swift_type": "Point"
},
"Point2i": {
"objc_type": "Point2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Point2i fromNative:%(n)s]",
"swift_type": "Point"
},
"Point2f": {
"objc_type": "Point2f*",
@@ -145,12 +152,14 @@
"Rect": {
"objc_type": "Rect2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Rect2i fromNative:%(n)s]"
"from_cpp": "[Rect2i fromNative:%(n)s]",
"swift_type": "Rect"
},
"Rect2i": {
"objc_type": "Rect2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Rect2i fromNative:%(n)s]"
"from_cpp": "[Rect2i fromNative:%(n)s]",
"swift_type": "Rect"
},
"Rect2f": {
"objc_type": "Rect2f*",
@@ -175,7 +184,14 @@
"Size": {
"objc_type": "Size2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Size2i fromNative:%(n)s]"
"from_cpp": "[Size2i fromNative:%(n)s]",
"swift_type": "Size"
},
"Size2i": {
"objc_type": "Size2i*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[Size2i fromNative:%(n)s]",
"swift_type": "Size"
},
"Size2f": {
"objc_type": "Size2f*",
@@ -190,12 +206,14 @@
"String": {
"objc_type": "NSString*",
"to_cpp": "cv::String(%(n)s.UTF8String)",
"from_cpp": "[NSString stringWithUTF8String:%(n)s.c_str()]"
"from_cpp": "[NSString stringWithUTF8String:%(n)s.c_str()]",
"swift_type": "String"
},
"std::string": {
"objc_type": "NSString*",
"to_cpp": "std::string(%(n)s.UTF8String)",
"from_cpp": "[NSString stringWithUTF8String:%(n)s.c_str()]"
"from_cpp": "[NSString stringWithUTF8String:%(n)s.c_str()]",
"swift_type": "String"
},
"TermCriteria": {
"objc_type": "TermCriteria*",
@@ -230,7 +248,8 @@
"c_string": {
"objc_type": "NSString*",
"to_cpp": "%(n)s.UTF8String",
"from_cpp": "[NSString stringWithUTF8String:%(n)s]"
"from_cpp": "[NSString stringWithUTF8String:%(n)s]",
"swift_type": "String"
},
"vector_DMatch": {
"objc_type": "DMatch*",
@@ -246,7 +265,8 @@
},
"vector_Point": {
"objc_type": "Point2i*",
"v_type": "Point"
"v_type": "Point2i",
"swift_type": "[Point]"
},
"vector_Point2f": {
"objc_type": "Point2f*",
@@ -270,7 +290,8 @@
},
"vector_Rect": {
"objc_type": "Rect2i*",
"v_type": "Rect2i"
"v_type": "Rect2i",
"swift_type": "[Rect]"
},
"vector_Rect2d": {
"objc_type": "Rect2d*",
@@ -282,11 +303,13 @@
},
"vector_String": {
"objc_type": "NSString*",
"v_type": "String"
"v_type": "String",
"swift_type": "[String]"
},
"vector_string": {
"objc_type": "NSString*",
"v_type": "std::string"
"v_type": "std::string",
"swift_type": "[String]"
},
"vector_Vec4f": {
"objc_type": "Float4*",
@@ -304,31 +327,42 @@
"objc_type": "ByteVector*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[ByteVector fromNative:%(n)s]",
"cast_to": "std::vector<char>"
"cast_to": "std::vector<char>",
"primitive_vector": true,
"swift_type": "[Int8]"
},
"vector_double": {
"objc_type": "DoubleVector*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[DoubleVector fromNative:%(n)s]",
"cast_to": "std::vector<double>"
"cast_to": "std::vector<double>",
"primitive_vector": true,
"swift_type": "[Double]"
},
"vector_float": {
"objc_type": "FloatVector*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[FloatVector fromNative:%(n)s]",
"cast_to": "std::vector<float>"
"cast_to": "std::vector<float>",
"primitive_vector": true,
"swift_type": "[Float]"
},
"vector_int": {
"objc_type": "IntVector*",
"to_cpp": "%(n)s.nativeRef",
"from_cpp": "[IntVector fromNative:%(n)s]",
"cast_to": "std::vector<int>"
"cast_to": "std::vector<int>",
"primitive_vector": true,
"swift_type": "[Int32]"
},
"vector_uchar": {
"objc_type": "ByteVector*",
"to_cpp": "(std::vector<uchar>&)%(n)s.nativeRef",
"from_cpp": "[ByteVector fromNative:(std::vector<char>&)%(n)s]",
"cast_to": "std::vector<uchar>"
"cast_to": "std::vector<uchar>",
"primitive_vector": true,
"swift_type": "[UInt8]",
"unsigned": true
},
"vector_vector_Mat": {
"objc_type": "Mat*",
@@ -344,7 +378,8 @@
},
"vector_vector_Point": {
"objc_type": "Point2i*",
"v_v_type": "Point"
"v_v_type": "Point2i",
"swift_type": "[[Point]]"
},
"vector_vector_Point2f": {
"objc_type": "Point2f*",
@@ -356,19 +391,27 @@
},
"vector_vector_char": {
"objc_type": "ByteVector*",
"v_type": "ByteVector"
"v_type": "ByteVector",
"primitive_vector_vector": true,
"swift_type": "[[Int8]]"
},
"vector_vector_int": {
"objc_type": "IntVector*",
"v_type": "IntVector"
"v_type": "IntVector",
"primitive_vector_vector": true,
"swift_type": "[[Int32]]"
},
"vector_vector_float": {
"objc_type": "FloatVector*",
"v_type": "FloatVector"
"v_type": "FloatVector",
"primitive_vector_vector": true,
"swift_type": "[[Float]]"
},
"vector_vector_double": {
"objc_type": "DoubleVector*",
"v_type": "DoubleVector"
"v_type": "DoubleVector",
"primitive_vector_vector": true,
"swift_type": "[[Double]]"
},
"ByteVector": {
"objc_type": "ByteVector*",
+19 -19
View File
@@ -854,15 +854,15 @@ class CoreTest: OpenCVTestCase {
}
func testMeanStdDevMatMatMat() {
let mean = DoubleVector()
let stddev = DoubleVector()
Core.meanStdDev(src: rgbLena, mean: mean, stddev: stddev)
var mean = [Double]()
var stddev = [Double]()
Core.meanStdDev(src: rgbLena, mean: &mean, stddev: &stddev)
let expectedMean = [105.3989906311035, 99.56269836425781, 179.7303047180176]
let expectedDev = [33.74205485167219, 52.8734582803278, 49.01569488056406]
assertArrayEquals(expectedMean as [NSNumber], mean.array as [NSNumber], OpenCVTestCase.EPS)
assertArrayEquals(expectedDev as [NSNumber], stddev.array as [NSNumber], OpenCVTestCase.EPS)
assertArrayEquals(expectedMean, mean, OpenCVTestCase.EPS)
assertArrayEquals(expectedDev, stddev, OpenCVTestCase.EPS)
}
func testMeanStdDevMatMatMatMat() {
@@ -871,16 +871,16 @@ class CoreTest: OpenCVTestCase {
let mask = gray0.clone()
submat = mask.submat(rowStart: 0, rowEnd: mask.rows() / 2, colStart: 0, colEnd: mask.cols() / 2)
submat.setTo(scalar: Scalar(1))
let mean = DoubleVector()
let stddev = DoubleVector()
var mean = [Double]()
var stddev = [Double]()
Core.meanStdDev(src: grayRnd, mean: mean, stddev: stddev, mask: mask)
Core.meanStdDev(src: grayRnd, mean: &mean, stddev: &stddev, mask: mask)
let expectedMean = [33]
let expectedDev = [0]
let expectedMean = [33.0]
let expectedDev = [0.0]
assertArrayEquals(expectedMean as [NSNumber], mean.array as [NSNumber], OpenCVTestCase.EPS)
assertArrayEquals(expectedDev as [NSNumber], stddev.array as [NSNumber], OpenCVTestCase.EPS)
assertArrayEquals(expectedMean, mean, OpenCVTestCase.EPS)
assertArrayEquals(expectedDev, stddev, OpenCVTestCase.EPS)
}
func testMerge() throws {
@@ -940,14 +940,14 @@ class CoreTest: OpenCVTestCase {
rgba0Copy.setTo(scalar: Scalar(10, 20, 30, 40))
let src = [rgba0Copy]
let dst = [gray3, gray2, gray1, gray0, getMat(CvType.CV_8UC3, vals: [0, 0, 0])]
let fromTo = IntVector([
let fromTo:[Int32] = [
3, 0,
3, 1,
2, 2,
0, 3,
2, 4,
1, 5,
0, 6])
0, 6]
Core.mixChannels(src: src, dst: dst, fromTo: fromTo)
@@ -1530,13 +1530,13 @@ class CoreTest: OpenCVTestCase {
func testSplit() throws {
let m = getMat(CvType.CV_8UC3, vals: [1, 2, 3])
let cois = NSMutableArray()
var cois = [Mat]()
Core.split(m: m, mv: cois)
Core.split(m: m, mv: &cois)
try assertMatEqual(gray1, cois[0] as! Mat)
try assertMatEqual(gray2, cois[1] as! Mat)
try assertMatEqual(gray3, cois[2] as! Mat)
try assertMatEqual(gray1, cois[0])
try assertMatEqual(gray2, cois[1])
try assertMatEqual(gray3, cois[2])
}
func testSqrt() throws {