【问题标题】:insert text into image without computer vision system toolbox - Matlab在没有计算机视觉系统工具箱的情况下将文本插入图像 - Matlab
【发布时间】:2014-12-10 17:11:18
【问题描述】:

在 Matlab 中心 (http://www.mathworks.com/matlabcentral/answers/26033-how-to-insert-text-into-image) 我找到了这段代码:

Text = sprintf('Create text inserter object \nwith same property values');
H = vision.TextInserter(Text);
H.Color = [1.0 1.0 0];
H.FontSize = 20;
H.Location = [25 25];
I = im2double((imread('football.jpg')));
InsertedImage = step(H, I);
imshow(InsertedImage);

如何在不使用计算机视觉系统工具箱的情况下做同样的事情?

谢谢

【问题讨论】:

标签: matlab matlab-cvst


【解决方案1】:

上面的答案(Benoit_11)要求您先显示图像,写入文本,然后保存图像。如果您正在处理视频的帧(不是单个图像或其中几个),这将变得非常慢。为了获得更快的处理时间,您必须直接写入图像矩阵。我能想到的另一种选择(但这不是很优雅)是为字母字符创建(或下载)小模板(例如 20x20),然后用这些模板覆盖所需区域中的图像矩阵。例如,对于 RGB “真彩色”图像,我们将有这样的内容:

im(y:y+19,x:x+19,:)=template;

【讨论】:

    【解决方案2】:

    跟进我的评论:

    A = imread('football.jpg');
    
    YourText = sprintf('Create text inserter object \nwith same property values');
    
    figure;
    
    imshow(A);
    
    hText = text(25,25,YourText,'Color',[1 1 0],'FontSize',20);
    

    给出以下内容:

    查看文档页面以查看可用于修改/自定义文本的所有选项。请注意,您不必使用 sprintf 来生成字符串,但是必须在 sprintf 中使用换行符 (\n) 才能工作。

    编辑针对您在下面的评论,如果您需要保存嵌入了文本的图像,您可以使用 getframe 获取该图的内容,然后通过 imwrite 进行保存:

    hFrame = getframe(gca) %// Get content of figure
    
    imwrite(hFrame.cdata,'MyImage.tif','tif') %// Save the actual data, contained in the cdata property of hFrame
    

    EDIT #2 作为使用 getframe 的替代方案,请查看 here,因为有 2 个不错的想法提出,即使用 saveas 或 avi 文件。

    【讨论】:

    • 谢谢,我该怎么做才能将它嵌入到图像中?
    • 你的意思是保存图片和里面的文字吗?
    • 是的。新图片就好了。
    • 谢谢。我认为它不会在 GUI 中工作,因为您建议使用 getframe。我对吗?还有其他解决方案吗?
    • 是的,它在 GUI 中应该可以正常工作,尽管您确实需要一个轴来显示图像。我会考虑一个可能的解决方法
    猜你喜欢
    • 2011-09-13
    • 2015-01-30
    • 2014-07-02
    • 2016-01-03
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2014-04-05
    相关资源
    最近更新 更多