2017-04-13 4 views
1

Ich verwende dieses Matlab Skript einen arabischen Text in ein BildEinfügen von arabischem Text in ein Bild mit Matlab?

I = imread('test.jpg'); 
text_str = cell(3,1); 
conf_val = [85.212 98.76 78.342]; 
str = char(['م','ا','ل','س']); 
encoded_str = unicode2native(str, 'UTF-8'); 
position = [23 23]; 
RGB = insertText(I,position,str); 
figure 
imshow(RGB) 

Es zeigt schreiben ‚?‘ im Bild anstelle der arabischen Buchstaben. link to result

+0

Ich kann nicht replizieren. Der Text zeigt sich gut in R2017a. Welche Version verwenden Sie? Es gibt mehrere Zeilen Ihres Beispielcodes, die nichts bewirken. – horchler

+0

ich verwende Matlab R2015a –

Antwort

1

Dies liegt daran, dass die Zeichensatzkodierung für M-Dateien standardmäßig ANSI ist. So können Sie die corresponding entities für die erforderlichen Buchstaben verwenden. Diese Einheiten können folgende Verwendung des im Befehlsfenster erzeugt werden:

uint16(['م','ا','ل','س']);  %Thanks to horchler 

So können Sie verwenden:

I = imread('office_2.jpg');  %Using a built-in demo image 
position = [23 23];    %As given in the question 
str = char([1587 1604 1575 1605]); %Converted into the corresponding entities 
rgb = insertText(I,position,str); 
figure; 
imshow(rgb); 

Edit: Das Problem, das Sie in den comment erwähnt ist reproduzierbar in MATLAB R2015a . Sie können AddTextToImage aus dem Dateiaustausch verwenden. Lade das herunter und füge es deinem Pfad hinzu.
Und dann ändern Sie rgb = insertText(I,position,str); zu rgb = AddTextToImage(I,str,position); im obigen Code.

+1

Diese Entitäten können automatisch mit 'uint16 (['م', 'Ç', 'ل', 'Ó'])' 'generiert werden. – horchler

+0

im Arbeitsbereich hat die Variable den arabischen Text, aber bei der Anzeige des Bildes nur ein gelbes Rechteck, das nicht mehr '?' Ich habe versucht, die Textgröße zu ändern, aber nichts ändert immer das leere Rechteck –

+0

@ AmineGhozlène Haben Sie den Code versucht, wie es in der Antwort angegeben ist oder haben Sie einige Änderungen vorgenommen? –