2012-08-06 4 views
1

Iphone 응용 프로그램에서 작업 중입니다.카메라의 각 프레임에 필터 알고리즘 적용

다음 작업을 수행해야합니다. 사용자가 "카메라 탭"을 클릭하면 카메라가 원형 오버레이로 뷰 내부에서 열립니다.

카메라에 필터링 알고리즘을 적용하고 싶습니다.

이 작업을 수행하는 가장 좋은 방법을 찾고 있습니다. 도움이되는 도서관이 있습니까? 나는 OpenCV 라이브러리를 사용하고

  1. : 저는 현재 뭐하는 거지

    .

  2. 타이머를 정의합니다.
  3. 각 타이머 틱에 대해 OpenCV 프레임 워크에서 cvCaptureFromCam() 메서드를 호출합니다. 그러면 카메라로 사진을 캡처하고 을 반환합니다.
  4. 캡처 한 이미지에 알고리즘을 적용합니다.
  5. 은 내가 생각 나는 이미지를 얻을 각 타이머 틱에, 그것을 필터링하고는 UIImageView에 넣어하는 UIImageView

의 이미지를 표시합니다. 타이머 틱이 충분히 빠르면 연속으로 나타납니다.

그러나 cvCaptureFromCam은 약간 느리고이 전체 프로세스는 너무 많은 메모리를 사용합니다.

더 나은 방법에 대한 제안은 크게 감사드립니다. 감사합니다.

+0

사진을 표시해야하는 경우 필터링하기 전에'resize'를 사용하여 정확한 크기로 만들 수 있습니다. 이렇게하면 필터링 프로세스가 빨라질 수 있습니다. – Olotiar

+1

은 "코어 이미지 시작"및 "코어 이미지 기술"에 대한 WWDC 2012 비디오를 검토합니다. 필터링을 위해 자신 만의 커스텀 OpenGL ES 쉐이더를 만들고 싶다면 브래드 라슨 (Brad Larsons) GPUImage 프로젝트도 큰 관심을 가질 것입니다. – CSmith

답변

1

OpenCV와 같은 CPU 바운드 처리를 기반으로하는 것은 현재 iOS 장비에서 라이브 비디오 필터링을하기에는 너무 느립니다. 내가 this answer라고 말하면서, OpenGL ES를 보길 강력히 권합니다.

CSmith에서 언급했듯이 관련된 OpenGL ES에 대해 걱정할 필요없이 GPU 기반 필터링 스타일을 수행하기 위해 GPUImage이라는 오픈 소스 프레임 워크를 작성했습니다. 이 프레임 워크의 대부분의 필터는 iOS 카메라의 30FPS 프레임 속도 이상에서 640x480의 라이브 비디오에 적용 할 수 있습니다. 저는 OpenCV의 대부분의 이미지 처리 기능뿐만 아니라 Core Image에있는 필터를 모두 대체한다는 목표를 점진적으로 추가했습니다. 필요한 OpenCV에서 누락 된 것이 있다면 프로젝트의 문제점 페이지에서 알려주십시오.

FilterShowcase 예제 응용 프로그램을 빌드하고 실행하여 사용 가능한 필터의 전체 목록과 라이브 비디오 소스에서 수행하는 방법을 확인하고 SimplePhotoFilter 예제를보고 해당 필터를 적용하여 비디오 및 사진을 미리보기 할 수있는 방법을 확인하십시오 카메라.

+0

반드시 확인하겠습니다. GPU 처리가 더 나은 잠재력을 가지고있는 것처럼 보입니다. – Youssef

+0

그것은 훌륭한 작품입니다 @ 브래드. 그게 필터의 거대한 컬렉션입니다 !!. 나는 오일 페인팅 효과 (김프의 oilfy 필터)를 적용하기위한 필터를 찾을 수 있었으면 좋겠습니다.그것을 컬렉션에 추가 할 수 있다고 생각합니까? – matt007