【发布时间】:2020-12-25 03:28:01
【问题描述】:
我有一个透明徽标,我想使用 OpenCV 将其转换为灰度。我正在使用以下代码
def to_grayscale(logo):
gray = cv2.cvtColor(logo, cv2.COLOR_RGB2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
canny = cv2.Canny(blur, 50, 150) # sick
return canny
这是图像变量:
brand_logo = Image.open(current_dir + '/logos/' + logo_image, 'r').convert('RGBA')
brand_logo = to_grayscale(brand_logo)
这是错误:
TypeError: Expected Ptr<cv::UMat> for argument 'src'
我尝试使用 PIL 的.convert('L'),但它使它变成了 90% 的透明灰色。无论如何我可以解决这个问题吗?
更新
def to_grayscale(logo):
OCVim = np.array(logo)
BGRim = cv2.cvtColor(OCVim, cv2.COLOR_RGB2BGR)
blurry = cv2.GaussianBlur(BGRim, (5, 5), 0)
canny = cv2.Canny(blurry, 50, 150)
PILim = Image.fromarray(canny)
return PILim
【问题讨论】:
-
请提供minimal reproducible example,以及整个错误输出。
标签: python opencv python-imaging-library