caffe与python cv2冲突

时间:2018-11-08 08:09:47

标签: opencv caffe

我想用python捕获相机信息,并用caffe进行预测。当同时导入caffe和cv2时,代码如下:

import caffe
import cv2

# caffe.set_mode_cpu()
cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

将会发生以下错误:

objc [35793]:在/usr/local/opt/opencv/lib/libopencv_videoio.3.4.dylib(0x104dc0938)和/Users/python-envs/py27/lib/python2.7/site中都实现了类CaptureDelegate -packages / cv2 / cv2.so(0x1111d9380)。将使用两者之一。哪一个未定义。 src / tcmalloc.cc:332]尝试释放无效的指针0x7f9f37403fc0

我知道原因是,caffe和cv2使用不同的opencv lib,但是如何解决此问题?此外,我不想重建caffe

1 个答案:

答案 0 :(得分:1)

这是因为caffe和opencv使用不同的内存分配器。 Caffe使用tcmalloc,但opencv使用默认值。 leveldb取决于gperftools,其中包含tcmalloc。 选择是否在caffe的MakeFile.config中设置USE_LEVELDB:= 0。如果还没有,最好设置USE_LEVELDB:= 0并重建caffe。或者,您可以将opencv使用的内存分配器更改为与caffe相同。