代码之家  ›  专栏  ›  技术社区  ›  Cristian

在SWIFT中如何从C++矩阵中检索值?

  •  0
  • Cristian  · 技术社区  · 7 年前

    我有一个C++函数返回什么 cv::Mat 价值

    +(cv::Mat *) makeGray:(UIImage *) image {
        // Transform UIImage to cv::Mat
        cv::Mat imageMat;
        UIImageToMat(image, imageMat);
    
        //Transform image to grayscale
        cv::Mat grayMat;
        cv::cvtColor(imageMat, grayMat, CV_BGR2GRAY);
        return grayMat;
    }
    

    let grayMat = OpenCVWrapper.makeGray(photoImageView.image)
    

    我知道斯威夫特不重要 cv::Mat ,那么最好的替代方案是什么,这样我就可以完整地获得阵列?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Brandon    7 年前

    这应该行得通。。只需转换 cv::Mat 到 malloc 'd字节数组并返回该数组。

    + (uint8_t *)makeGray:(UIImage *)image count:(uint32_t *)count {
        // Transform UIImage to cv::Mat
        cv::Mat imageMat;
        UIImageToMat(image, imageMat);
    
        //Transform image to grayscale
        cv::Mat grayMat;
        cv::cvtColor(imageMat, grayMat, CV_BGR2GRAY);
    
        int size = grayMat.total() * grayMat.elemSize();
        void *bytes = malloc(size);
        memcpy(bytes, grayMat.data, size);
        *count = size;
        return bytes;
    }
    

    那么在快速方面,它应该是一个 UnsafeMutablePointer<UInt8>