2012-11-13 3 views
1

iOS의 OpenCV 용 사용자 정의 커널을 정의하려고합니다. 나는 이것을 할 확실한 방법을 찾을 수없는 것 같습니다. 내가 다른 사람들이 사용하는 것을 본 적이있는 방법은이 것이고, 나는 그것을 원하는 방식대로 정확하게 작동시키는 것처럼 보이지 않습니다. 다음과 같이 cVVideoCamera 대리자를 사용하고 있습니다.커널이있는 OpenCV Filter2D iPhone

- (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)의 유형 때문일 수 있습니다. 누구는 이것이 아이폰 카메라에 대해 보통 무엇인지 알아? 아니면 다른 문제가 있습니까?

+2

내가 할 수있는 한, OpenCV 대신 https://github.com/BradLarson/GPUImage에 대한 대안을 제안 할 수 있습니다. GPUImage3x3ConvolutionFilter를 사용하면 이와 같은 커널을 지정할 수 있으며 GPU 가속 기능을 사용하면 카메라에서 비디오를 처리 할 때 OpenCV보다 훨씬 빠릅니다. –

+0

저는 이미 GPUImage를 사용하여 이것을 이미했습니다! 나는 그것을 (안드로이드와 iOS) 그것을 할 크로스 플랫폼 방법을 찾고 있는데, 그래서 나는 IOS에 그것을 재현하는 방법을 찾고 있었다. GPUImage를 Android로 이전 한 경우 알려 주시기 바랍니다;) – Jameo

답변

2

CV_32FC2 유형은 전달중인 이미지의 유형을 나타내지 않으며, 커널에서 유형을 나타냅니다. float으로 m 유형을 변경하고 CV_32FC2를 CV_32f로 변경하면 작동합니다. 퍼포먼스가 문제가된다면 Brad Larson의 프레임 워크를 제안해야합니다.

+0

감사합니다. 작동하는 것 같습니다. 앞서 말한 것처럼 GPUImage를 사용하지 않는 유일한 이유는 Android 용 코드를 다시 사용하려고하기 때문입니다. 그래도 고마워! – Jameo

관련 문제