在 OpenCV 中绘制文本并将其保存到文件中。显示空白图片
Draw text in OpenCV and save it to file. Showing Blank image
我是 opencv 的新手。在这里,我试图创建一个图像,它是由带有 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)
它似乎是乱码(它是某种带有一行的文本)而不是数字。文字大小也出现了large.Any求助!!
看来我需要删除 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)
我设法创建了这样的东西,将上面的代码添加到一个函数中。需要多做一些工作。
首先,您可以使用 cv2.imwrite("filename.jpg", blank_image)
.
保存图像
cv2.putText(...)
的文档字符串是:
putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> None
cv2.putText
的第二个参数,"text",是一个字符串。很有可能,您代码中的 random_shape
不存储 "valid" 个字符。因此,您将值传递给 cv2.putText
,但不能将 "translated" 传递给可以显示的适当字符。
为什么不通过手动指定字符串来代替从 random_shape
获得的值进行调试?这样,您就可以测试问题是出在您的代码上,还是出在 OpenCV 使用打印字符或写入图像文件等的库上。
我是 opencv 的新手。在这里,我试图创建一个图像,它是由带有 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)
它似乎是乱码(它是某种带有一行的文本)而不是数字。文字大小也出现了large.Any求助!!
看来我需要删除 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)
我设法创建了这样的东西,将上面的代码添加到一个函数中。需要多做一些工作。
首先,您可以使用 cv2.imwrite("filename.jpg", blank_image)
.
cv2.putText(...)
的文档字符串是:
putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> None
cv2.putText
的第二个参数,"text",是一个字符串。很有可能,您代码中的 random_shape
不存储 "valid" 个字符。因此,您将值传递给 cv2.putText
,但不能将 "translated" 传递给可以显示的适当字符。
为什么不通过手动指定字符串来代替从 random_shape
获得的值进行调试?这样,您就可以测试问题是出在您的代码上,还是出在 OpenCV 使用打印字符或写入图像文件等的库上。