尝试使用numpy从灰度图像中创建rgb图像失败

时间:2018-03-05 02:47:04

标签: python opencv

我一直在努力想弄清楚最后一小时发生了什么。下面的代码显示了我面临的问题的重演。如果我从灰度初始图像设置img(第3行),则在尝试在其上绘制红线时会出现错误。如果我跳过绘制线,我在尝试将其叠加到第6行时会出现不同的错误。发生了什么?

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import cv2

initial_img = mpimg.imread('minnie.jpg')
grayscale_img = cv2.cvtColor(initial_img, cv2.COLOR_RGB2GRAY)
img = np.zeros((*grayscale_img.shape, 3), dtype=np.uint8)           # 3
cv2.line(img, (0, 0), (100, 100), [255, 0, 0], 3)
weighted_img = cv2.addWeighted(img, initial_img, α=0.8, β=1., γ=0.) # 6
plt.imshow(grayscale_img)

我得到的错误:

  

文件“test.py”,第12行,in       weighted_img = cv2.addWeighted(img,initial_img,α= 0.8,β= 1。,γ= 0。)#6 TypeError:只能将size-1数组转换为Python   标量

我希望在初始图像的顶部叠加一条红线,同时我需要从其灰度变换中生成img

1 个答案:

答案 0 :(得分:1)

根据the docs,您的参数顺序是错误的。尝试将您的第6行更改为:

weighted_img = cv2.addWeighted(img, alpha=0.8, src2=initial_img, beta=1., gamma=0.)