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:
@@ -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 {
|
||||
|
||||
@@ -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*",
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user