Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我无法打印彩色文本_Python 3.x_Opencv - Fatal编程技术网

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我大体上同意,但我没有提供任何意见,除了“阅读文件”,上面说“使用标志,或者随意使用这些数字”。我已经添加了建议的内容。