ios - 将 CGPoint 数组传回 swift

标签 ios swift objective-c++

有谁知道是否可以将 CGPoint 数组从 objective c++ 传递到 swift?

我能够将 CGPoint 传递回 swift。但是,我无法弄清楚如何将值作为数组传回。

这是我用来将它传递回 swift 的代码。

OpenCVWrapper.mm

+(CGPoint) detectCircle:(UIImage *)image
{
CGPoint pointArray;

cv::Mat img;
UIImageToMat(image, img);

cv::Mat grayMat;
cvtColor(img, grayMat, CV_BGR2GRAY);

cv::Mat dilateMat;
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(7,7));
cv::morphologyEx(grayMat, dilateMat, cv::MORPH_OPEN, kernel);

cv::Mat cannyMat;
Canny(dilateMat, cannyMat, 10, 100);

cv::Mat guassianMat;

cv::GaussianBlur(cannyMat, guassianMat, cv::Size(11,13), 0);

std::vector<cv::Vec3f> circleMat;
cv::HoughCircles(guassianMat, circleMat, CV_HOUGH_GRADIENT, 1, cannyMat.rows / 15,120, 10, 0, 30);

cv::Mat houghCircles;
houghCircles.create(guassianMat.rows, guassianMat.cols, CV_8UC1);

for( size_t i = 0; i < circleMat.size(); i++ )
{
    cv::Vec3i parameters = circleMat[i];
    double x, y;
    int r;

    x = parameters[0];
    y = parameters[1];
    r = int(parameters[2]);

    pointArray.x = x;
    pointArray.y = y;

}


return pointArray;
}

OpenCVWrapper.h

+(CGPoint) detectCircle: (UIImage *)image;

viewController.Swift

@IBAction func detectBtn(_ sender: Any) {
    var points : CGPoint = OpenCVWrapper.detectCircle(adjustBtightnessImage)
    print(points)

}

最佳答案

做到这一点的最好方法是使用 NSValue 将其包装起来,正如@OOPer 所说。

主要原因是CGPoint不是Objective-C中的对象类型。您不能将它直接放在 NSArray 中。您需要将其包装在 NSValue 中。

// Objective-C
+ (NSArray<NSValue *> *)detectCircle:(UIImage *)image {
  return @[
           [NSValue valueWithCGPoint:CGPointMake(10, 10)],
           [NSValue valueWithCGPoint:CGPointMake(10, 20)]
           ];
}

// swift
let points = Circle.detect(UIImage()).map { $0.cgPointValue }

关于ios - 将 CGPoint 数组传回 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52584003/

相关文章:

android - iOS中的onDraw相当于什么

ios - 将字典传递给 Analytics 参数 : Urban Airship

ios - XCode 4.2 Lion(iOS 产品)中与 Objective-C++/C++ 的链接错误

cocoa - 取消运行C++代码的NSThread

Iphone:应用可行性

iphone - UISegmentedControl 非常奇怪的问题

ios - 在中心 Cocos2d 中触摸时停止 Sprite 动画

swift - 替换 Storyboard 中的 ViewController,同时保留 Segues

swift - 如何从 Swift 5 中的另一个类获取数组

iphone - 将值从 Objective-C++ 存储/检索到 Objective-C