cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\ocl.cpp:5407: error: (-220:Unknown error code -220) OpenCL error CL_MEM_OBJECT_ALLOCATION_FAILURE (-4) during call: clEnqueueWriteBuffer(q, handle=000002028E579EB0, CL_TRUE, offset=0, sz=186432, data=000002023B951860, 0, 0, 0) in function 'cv::ocl::OpenCLAllocator::upload'
cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
這個錯誤我解決了一下午,給大家提供幾個解決思路
- 版本不適配問題,出現這個問題時,我既使用了tensorflow_gpu + CUDA,同時也使用了Opencv中的ocl庫,即OpenCL。大家跑代碼,尤其是輪子的時候一定注意調整版本號。
- 這個錯誤對應的warning其實是無關的,SourceReaderCB terminating async callback,消除這個warning只需要在cv2.VideoCapture(0, CV_CAP_DSHOW)就可以了,但其實這個並不是關鍵
- 這個問題的出現應該是由於opencv在運行過程中會調用opencl加速運算,而opencl對GPU的調用有很多與CUDA相同。這會導致程序運行出現內存故障,我嘗試了很多方法都沒有解決,最終我決定關閉opencl,即
cv2.ocl.setUseOpenCL(False)