在OpenCV中绘制文本并将其保存到文件中。显示空白图像

时间:2015-02-04 03:06:54

标签: python opencv

我是opencv的新手。在这里,我试图创建一个Image,它将是一个由0和1的字符串组成的形状(函数random_shape生成该字符串)。因此,字符串将在白色背景上键入。在这里,我可以创建一个白色背景图像,但无法在它前面添加文本。它只是创建一个空白图像。如果我给它不同的坐标,它也会给出分段错误。 感谢任何帮助。

font = cv2.FONT_HERSHEY_SIMPLEX    
blank_image = np.zeros((100,100,3), np.uint8)                                                                    
cv2.putText(blank_image,random_shape(100,100),(0,0), cv2.FONT_HERSHEY_SIMPLEX, 2,(0,255,0))
blank_image[:,0:1*100] = (255,255,255)

image=cv2.cv.fromarray(blank_image)
cv2.cv.SaveImage('pic.jpg', image)

更新:我已将代码更改为

blank_image = np.zeros((512,512,3), np.uint8)
blank_image[:,0:512] = (255,255,255)
cv2.putText(blank_image,random_shape(100,100)[0:100],(0,0), cv2.FONT_HERSHEY_\
SIMPLEX, 0.1,(0,0,0),cv2.CV_AA)
image=cv2.cv.fromarray(blank_image)
cv2.cv.SaveImage('pic.jpg', image)

enter image description here

似乎是一些乱码(它的某种文字带有一条线)而不是数字。文字的大小也显得很大。任何帮助!

2 个答案:

答案 0 :(得分:1)

首先,您只需使用cv2.imwrite("filename.jpg", blank_image)保存图像。

cv2.putText(...)的文档字符串是:

putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> None

cv2.putText的第二个参数“text”是一个字符串。有可能,代码中的random_shape不存储“有效”字符。因此,您要将值传递给cv2.putText,而这些值无法“翻译”为可以显示的正确字符。

为什么不通过手动指定字符串来代替从random_shape获得的值进行调试?这样,您可以测试问题是与您的代码有关,还是与OpenCV使用打印字符或写入图像文件等的库有关。

答案 1 :(得分:0)

似乎我需要移除cv2.CV_AA,并且在多行输出的情况下需要有足够的垂直间距。

blank_image = np.zeros((512,512,3), np.uint8)
blank_image[:,0:512] = (255,255,255)
cv2.putText(blank_image,random_shape(100,100)[0:100],(10,10), cv2.FONT_HERSHEY_\
SIMPLEX, 0.2,(0,0,0))
image=cv2.cv.fromarray(blank_image)
cv2.cv.SaveImage('pic.jpg', image)

我设法创建这样的东西在函数中添加上面的代码。需要更多地了解它。

enter image description here