2016-06-11 2 views
0

I 내부에서 OpenCV와 공유 생성 라이브러리는 CmakeList.txt 다음 사용 .so 파일을 컴파일 :Cmake -

cmake_minimum_required(VERSION 3.5.1) 
project(phase) 
SET(OpenCV_INCLUDE_DIRS "/usr/local/include/opencv") 
include_directories(INCLUDE_DIR include ${OpenCV_INCLUDE_DIRS}) 
set(OpenCV_LIB_DIR "/usr/local/lib") 
link_directories(${OpenCV_LIB_DIR}) 
aux_source_directory(src SOURCE) 
add_library(dct SHARED src/dct.c ${SOURCE}) 

그것은 나에게 오류를 제공하지 않았다.

import numpy as np 
import numpy.ctypeslib as npct 
from ctypes import c_int, c_double 

_array_1d_floatBase = npct.ndpointer(dtype=np.float32, ndim=1, flags="CONTIGUOUS") 

def _from_param(cls, obj): 
    if obj is None: 
     return obj 
    return _array_1d_floatBase.from_param(obj) 

array_1d_float = type(
    'DoubleArrayType', 
    (_array_1d_floatBase,), 
    {'from_param': classmethod(_from_param)} 
) 
array_1d_double = npct.ndpointer(dtype=np.double, ndim=1, flags="CONTIGUOUS") 
libcd = npct.load_library("/home/facu/libdct.so", ".") 
libcd.FastCosineTransform.restype = None 
libcd.FastCosineTransform.argtypes = [array_1d_float, c_int, c_int, c_int] 

def dct_lib(in_array, xsize, ysize, sign): 
    libcd.FastCosineTransform(in_array, xsize, ysize, sign) 
    return in_array 

in_array = laplacian 
print in_array 
out_dct = dct_lib(in_array, 512, 512, 1) 

를하지만 나에게 다음과 같은 오류 제공 : :이, 나는 파이썬 프로젝트에서 그것을 사용하고 싶었

OSError: /home/facu/libdct.so: undefined symbol: cvGetSeqElem 

내가 내 cmake 파일에서 뭔가 빠진 생각합니다. OpenCV가 포함 된 .so을 생성하려면 무엇을 포함해야합니까?

답변

1

target_link_libraries(dct opencv)과 같은 것을 실제로 호출하는 CMakeLists.txt의 부분을 찾지 못했습니다. find_package(opencv REQUIRED) 또는 이와 유사한 조회 루틴이 있는지 여부 또는 find_package을 사용할 계획이라면 빌드해야하는지 여부는 확실하지 않습니다. 라이브러리 자체를 어딘가에 연결해야합니다. 지금까지는 라이브러리가있는 경로 만 설정하고 실제 라이브러리 이름은 연결하지 않습니다.

편집 : Google은 친구입니다. Here 당신은 CMake를 사용하여 openCV에 연결하는 방법을 찾을 수 있습니다.