我无法打印橙色的文本。我识别了图像的边缘,然后在其上打印了文本。
%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()
答案 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
更改此行
img1 = cv2.imread('Edged_img.jpg',0)
到
img1 = cv2.imread('Edged_img.jpg',1)
从上面的链接文档中可以看到,使用这些数字是可以的,但实际上是在设置标志,因此可以使用标志定义使代码更清晰。巧合的是,如果您使用了标志,则可能不会出现此问题。
您可以将行更改为
img1 = cv2.imread('Edged_img', cv2.IMREAD_COLOR)
看看有多少更清晰,可以理解。特别是当您返回此代码/在几个月后将其移交给另一位开发人员时。