Python 3.x 我无法打印彩色文本
我无法以橙色打印文本。我识别了图像的边缘,然后在其上打印了文本Python 3.x 我无法打印彩色文本,python-3.x,opencv,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 =
%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()
问题在于,您试图绘制的图像(名为
img1
)是灰度图像,因为cv2的第二个参数。imread
在以下行中为0
:
img1 = cv2.imread('Edged_img.jpg',0)
您有两个选项来解决此问题。第一个是将图像加载为彩色图像,如下所示:
img1 = cv2.imread('Edged_img.jpg')
img1 = cv2.imread('Edged_img.jpg', 0)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
或者,如果您希望画布具有灰色外观,可以只复制单个通道以形成3通道图像,如下所示:
img1 = cv2.imread('Edged_img.jpg')
img1 = cv2.imread('Edged_img.jpg', 0)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
问题在于,您试图绘制的图像(名为
img1
)是灰度图像,因为cv2的第二个参数。imread
在以下行中为0
:
img1 = cv2.imread('Edged_img.jpg',0)
您有两个选项来解决此问题。第一个是将图像加载为彩色图像,如下所示:
img1 = cv2.imread('Edged_img.jpg')
img1 = cv2.imread('Edged_img.jpg', 0)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
或者,如果您希望画布具有灰色外观,可以只复制单个通道以形成3通道图像,如下所示:
img1 = cv2.imread('Edged_img.jpg')
img1 = cv2.imread('Edged_img.jpg', 0)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
您正在以灰度加载jpg,因此只能将灰度写入img1 换行
img1 = cv2.imread('Edged_img.jpg',0)
到
从上面链接的文档中可以看到,使用这些数字是可以的,但实际上您正在设置一个标志,因此可以使用标志定义使代码更清晰。巧合的是,如果您使用了这些标志,则可能不会出现此问题
你可以把线路改成
img1 = cv2.imread('Edged_img', cv2.IMREAD_COLOR)
看看这是多么清晰和易懂。特别是当您在几个月后返回此代码/将其交给其他开发人员时。您正在以灰度加载jpg,因此您只能将灰度写入img1 换行
img1 = cv2.imread('Edged_img.jpg',0)
到
从上面链接的文档中可以看到,使用这些数字是可以的,但实际上您正在设置一个标志,因此可以使用标志定义使代码更清晰。巧合的是,如果您使用了这些标志,则可能不会出现此问题
你可以把线路改成
img1 = cv2.imread('Edged_img', cv2.IMREAD_COLOR)
看看这是多么清晰和易懂。特别是当您在几个月后返回此代码/将其交给其他开发人员时。无论我使用哪个RGB值,文本都以灰度打印。我传递的RGB值是橙色的,无论我使用哪个RGB值,文本以灰度打印。我传递的RGB值是橙色的。如果它真的阻止OP使用幻数,这个答案会更好。如果它一开始说的是
cv2.IMREAD_GRAYSCALE
,那么为什么没有颜色就更明显了。@DanMašek我大体上同意,但我没有提供任何意见,除了“阅读文件”,上面说“使用标志,或者随意使用这些数字”。我已经添加了建议的。IMHO这个答案会更好,如果它真的阻止OP使用魔法数字的话。如果它一开始说的是cv2.IMREAD_GRAYSCALE
,那么为什么没有颜色就更明显了。@DanMašek我大体上同意,但我没有提供任何意见,除了“阅读文件”,上面说“使用标志,或者随意使用这些数字”。我已经添加了建议的内容。