본문 바로가기

Image Processing

(4)
Video Codec SDK 사용 시 주의점 Nvidia에서 제공해주는 Video Codec SDK는 크게 2가지를 제공한다. Encoding에 사용되는 NVENCODE API Decoding에 사용되는 NVDECODE API NVDEC를 통해 카메라 혹은 비디오로 취득 된 영상은 YUV 4:2:0 형식(Format)임을 주의하자. 기존에 OpenCV에서 제공하는 cv::VideoCapture()를 이용할 경우 RGB 형식(Format)임으로 기존의 형식일 것이라고 생각하고 처리할 경우 정상 처리가 되지 않는다. NVDEC를 이용하여 영상을 취득하고 기존의 형식으로 처리할 경우 변환과정을 꼭 진행하기 바란다. 참고 자료 1 : developer.nvidia.com/nvidia-video-codec-sdk#NVDECFeatures NVIDIA VID..
IP Camera의 연결 여부 확인 OpenCV에서 IP Camera로부터 영상을 가져오는 방법은 cv::VideoCapture() 혹은 cv::cudacodec::createVideoReader() 를 이용하는 것이다. 하지만 IP Camera가 연결이 되어 있지 않은 상태에서 해당 객체를 통해 영상을 가져오려고 한다면 어떻게 될까? 두 방법 모두 Exception이 발생하고 프로그램은 중단 될 것이다. Exception 발생을 방지 하기 위해서는 다양한 방법이 있겠지만 필자는 Socket 통신을 이용하여 먼저 확인하는 것을 추천한다. IP Camera 설정 Page에 가면 통신 가능한 port 번호를 확인 할 수 있다. Socket 연결이 정상이라면 IP Camera가 정상적으로 연결 되어 있는 것을 확인 할 수 있다. 참고 자료 1 ..
Gpu에서 영상 다루기[2] - CUDA Cuda (compute unified device architecture) 이용 방법 특징 - Nvidia Gpu에서만 이용가능, OpenCL과 비슷한 성능을 보이지만 특정 benchmark에서는 CUDA가 월등한 성능을 보임 - cuda::GpuMat Class 이용 사용 방법 1. Cpu Memory를 Gpu Memory에 Upload Mat mSrc = imread(lena.jpg); cuda::GpuMat Src; Src.upload(mSrc); 2. cv::cuda 처리 함수의 SrcArr(GpuMat), DstArr(GpuMat) 설정 및 처리 cuda::GpuMat Dst; cv::cuda::cvtColor(Src, Dst, COLOR_RGB2GRAY); 3. 처리된 결과를 Mat 형식으로..
Gpu에서 영상 다루기[1] - OpenCL OpenCL (open computing language) 이용 방법 특징 - 다양한 종류의 Gpu에서 이용가능 - UMat Class 이용 사용 방법 1. Context 생성 ocl::Context context; context.create(ocl::Device::TYPE_GPU) 2. Device(Gpu)와 Context 설정 ocl::Device(context.device(0)); 3. UMat에 Mat Data 설정 Mat mSrc = imread("lena.jpg", IMREAD_GRAYSCALE); UMat src = mSrc.getUMat(ACCESS_READ); 4. OpenCL Enable 상태 설정 ocl::setUseOpenCL(true); 5. OpenCV 처리 함수의 SrcArr(..