Python-OpenCV解決報錯 OpenCL error CL_MEM_OBJECT_ALLOCATION_FAILURE (-4)

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

 

這個錯誤我解決了一下午,給大家提供幾個解決思路

  1. 版本不適配問題,出現這個問題時,我既使用了tensorflow_gpu + CUDA,同時也使用了Opencv中的ocl庫,即OpenCL。大家跑代碼,尤其是輪子的時候一定注意調整版本號。
  2. 這個錯誤對應的warning其實是無關的,SourceReaderCB terminating async callback,消除這個warning只需要在cv2.VideoCapture(0, CV_CAP_DSHOW)就可以了,但其實這個並不是關鍵
  3. 這個問題的出現應該是由於opencv在運行過程中會調用opencl加速運算,而opencl對GPU的調用有很多與CUDA相同。這會導致程序運行出現內存故障,我嘗試了很多方法都沒有解決,最終我決定關閉opencl,即
cv2.ocl.setUseOpenCL(False)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章