擅长:python、mysql、java
<p>您的代码可以修复如下:</p>
<pre><code>import numpy as np, cv
vis = np.zeros((384, 836), np.float32)
h,w = vis.shape
vis2 = cv.CreateMat(h, w, cv.CV_32FC3)
vis0 = cv.fromarray(vis)
cv.CvtColor(vis0, vis2, cv.CV_GRAY2BGR)
</code></pre>
<p>简要说明:</p>
<ol>
<li><code>np.uint32</code>OpenCV不支持数据类型(它支持<code>uint8</code>,<code>int8</code>,<code>uint16</code>,<code>int16</code>,<code>int32</code>,<code>float32</code>,<code>float64</code>)</li>
<li><code>cv.CvtColor</code>无法处理numpy数组,因此两个参数都必须转换为OpenCV类型。<code>cv.fromarray</code>执行此转换。</li>
<li><code>cv.CvtColor</code>的两个参数的深度必须相同。所以我将源类型更改为32位浮点,以匹配ddestination。</li>
</ol>
<p>另外,我建议您使用较新版本的OpenCV python API,因为它使用numpy数组作为主要数据类型:</p>
<pre><code>import numpy as np, cv2
vis = np.zeros((384, 836), np.float32)
vis2 = cv2.cvtColor(vis, cv2.COLOR_GRAY2BGR)
</code></pre>