本文主要是介绍openCV 报错 Layout of the output array img is incompatible with cv::Mat, 错误原理与解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当绘制使用ndarry表示的图像的边框.以及其他的绘制操作,均会发生此错误
错误如下
cv2.rectangle(cv_img, (x1, y1), (x2, y2), color, 2)
cv2.error: OpenCV(4.10.0) :-1: error: (-5:Bad argument) in function 'rectangle'
> Overload resolution failed:
> - Layout of the output array img is incompatible with cv::Mat
> - Expected Ptr<cv::UMat> for argument 'img'
> - Layout of the output array img is incompatible with cv::Mat
> - Expected Ptr<cv::UMat> for argument 'img'
主要是因为 ndarray 导致在内存中不连续.表现为array.flags.c_contiguous=False了
不是由于形状或者类型导致的错误,仔细观察错误,可以发现是output array的问题,无法正确输出.
当ndarray执行了np.transpose一类操作时由于替换了通道顺序,则会破坏原来的数组结构,故而需要在执行一次copy即可
numpy_img = numpy_img.copy()
这篇关于openCV 报错 Layout of the output array img is incompatible with cv::Mat, 错误原理与解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!