我无法打印彩色文本

时间:2019-04-25 10:37:14

标签: python-3.x opencv

我无法打印橙色的文本。我识别了图像的边缘,然后在其上打印了文本。

%matplotlib inline
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('ind_maharashtra.png',0)
edges = cv2.Canny(img,100,20)
cv2.imwrite('Edged_img.jpg',edges)
#plt.subplot(121)
img1 = cv2.imread('Edged_img.jpg',0)

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img1,'JAI MAHARASHTRA !!',(70,150), font, 0.7,(255,69,0),2,cv2.LINE_8)
cv2.imshow('Maharashtra Map',img1)
#cv2.imshow('Maharashtra Map',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

2 个答案:

答案 0 :(得分:0)

问题是您尝试绘制的图像(名为img1的图像是灰度图像,因为cv2.imread的第二个参数在以下行:

0

您有2个解决此问题的方法。首先是将图像加载为彩色图像,如下所示:

img1 = cv2.imread('Edged_img.jpg',0)

或者,如果您希望画布具有灰色外观,则可以复制单个通道以形成3通道图像,如下所示:

img1 = cv2.imread('Edged_img.jpg')

答案 1 :(得分:0)

您正在以灰度加载jpg,因此只能将灰度写入img1

OpenCV Imread docs enter image description here

更改此行

img1 = cv2.imread('Edged_img.jpg',0)

img1 = cv2.imread('Edged_img.jpg',1)

从上面的链接文档中可以看到,使用这些数字是可以的,但实际上是在设置标志,因此可以使用标志定义使代码更清晰。巧合的是,如果您使用了标志,则可能不会出现此问题。

您可以将行更改为

img1 = cv2.imread('Edged_img', cv2.IMREAD_COLOR)

看看有多少更清晰,可以理解。特别是当您返回此代码/在几个月后将其移交给另一位开发人员时。