我是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)
似乎是一些乱码(它的某种文字带有一条线)而不是数字。文字的大小也显得很大。任何帮助!
答案 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)
我设法创建这样的东西在函数中添加上面的代码。需要更多地了解它。