我一直在努力想弄清楚最后一小时发生了什么。下面的代码显示了我面临的问题的重演。如果我从灰度初始图像设置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
。
答案 0 :(得分:1)
根据the docs,您的参数顺序是错误的。尝试将您的第6行更改为:
weighted_img = cv2.addWeighted(img, alpha=0.8, src2=initial_img, beta=1., gamma=0.)