距离这篇文章发布一年了,感谢评论区朋友让我又沉下心研究了一下这个问题,我认为这个回答已经基本解释了问题发生的浅层逻辑。
懒人版:使用np.ascontiguousarray(array)重整你报错的变量
python opencv TypeError: Layout of the output array incompatible with cv::Mat - Stack Overflow
这是最早报错的提示,一开始我以为是读入的prob类型不匹配(这个思路误导了我一个周末),在这个思路下我对prob进行了相当多的调试(包括上面注释掉的部分,当时怀疑是数组尺度问题,专门又回去复习了一遍数组reshap和transpose的区别),然后又怀疑是normalize识别的prob是不是因为不是标准BGR或者HSV不能识别,最后意外之下看了另外一个类似的报错才考虑到了是不是变量本身的问题。
Traceback (most recent call last):
File "D:/learnOpenCV4_Python-main/chapter12/NeuralStyle.py", line 48, in <module>
cv.normalize(prob, prob, 0, 255, cv.NORM_MINMAX) # 这里应当读入一个图像格式
cv2.error: OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function