Ios 带内核的OpenCV Filter2D iPhone
我正在尝试为iOS上的OpenCV定义一个自定义内核。我似乎找不到一个明确的方法来做这件事。我看到其他一些人使用的方法就是这个,我似乎无法让它完全按照我想要的方式工作。我使用的cVVideoCamera代表如下:Ios 带内核的OpenCV Filter2D iPhone,ios,opencv,computer-vision,Ios,Opencv,Computer Vision,我正在尝试为iOS上的OpenCV定义一个自定义内核。我似乎找不到一个明确的方法来做这件事。我看到其他一些人使用的方法就是这个,我似乎无法让它完全按照我想要的方式工作。我使用的cVVideoCamera代表如下: - (void)processImage:(Mat&)image; { // Do some OpenCV stuff with the image double m[] = {1.0, 1.0, 1.0, 2.0, 2.0, 2
- (void)processImage:(Mat&)image;
{
// Do some OpenCV stuff with the image
double m[] = {1.0, 1.0, 1.0,
2.0, 2.0, 2.0,
1.0, 1.0, 1.0};
cv::Mat kernel = cv::Mat(3, 3, CV_32FC2, m);
int ddepth = -1;
cv::filter2D(image, image, ddepth, kernel);
}
这似乎不起作用。我认为这可能是因为cv:Mat构造函数(cv_32FC2)中的类型。有人知道iPhone摄像头通常应该是什么吗?或者还有其他问题吗?类型CV_32FC2不是指要传递的映像的类型,而是指正在生成的内核中的类型。将m的类型更改为浮动,并将CV_32FC2更改为CV_32f,它应该可以工作。如果性能有问题,您也应该像Brad Larson建议的那样尝试一下他的框架。如果可以,我可以建议OpenCV的替代方案:。GPUImage3x3ConvolutionFilter允许您指定这样的内核,它提供的GPU加速使它在处理来自摄像头的视频时比OpenCV快得多。事实上,我已经使用GPUImage完成了这项工作!我正在寻找一种跨平台的方法(Android和iOS),所以我正在寻找一种在iOS上复制它的方法。如果您曾经将GPUImage移动到Android,请告诉我;)谢谢,这似乎有效!如上所述,我不使用GPUImage的唯一原因是因为我正在尝试重新使用Android的代码。谢谢你!