在64位mac上编译OpenCV代码

War*_*ing 6 c++ macos opencv g++ 32bit-64bit

我最近继承了一些OpenCV代码.我在我的mac上安装了openCV,内置在XCode中,然后编译并成功运行了我的第一个openCV"hello world"-ish程序.

现在,我尝试运行我得到的代码,但我得到的是使我错误认为它是与原始代码的问题被一个32位的Windows系统上运行和我是一个64位的Mac上.

当我通过输入"make"运行Makefile时

CC = g++
CFLAGS =
LDFLAGS = -I/usr/local/include/opencv -lm -lopencv_core -lopencv_highgui -lopencv_video
ALL = vision

all: $(ALL)

vision: vision.o
    $(CC) $(LDFLAGS) -o $@ $^

vision.o: vision.cpp
    $(CC) $(LDFLAGS) -c $<

.PHONY: clean

clean:
    rm -rf *.o core* $(ALL)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出...

g++ -I/usr/local/include/opencv -lm -lopencv_core -lopencv_highgui -lopencv_video -o vision vision.o
Undefined symbols for architecture x86_64:
  "cv::equalizeHist(cv::Mat const&, cv::Mat&)", referenced from:
      _main in vision.o
  "cv::threshold(cv::Mat const&, cv::Mat&, double, double, int)", referenced from:
      _main in vision.o

ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [vision] Error 1
Run Code Online (Sandbox Code Playgroud)

我糊涂了; 这是否意味着我的OpenCV安装错误,代码(具体是那些方法)需要更改,还是完全不同的?

注意:当我从vision.cpp代码中注释掉问题方法时,一切都编译得很好.

kar*_*lip 16

添加opencv_imgproc到您的LDFLAGS:

LDFLAGS = -I/usr/local/include/opencv -lm -lopencv_core -lopencv_highgui -lopencv_video -lopencv_imgproc
Run Code Online (Sandbox Code Playgroud)