将整数矩阵(0到30)转换为表情符号矩阵



我正在将图像转换为一组表情符号,具体取决于有多少种颜色。数学部分完成了。我有从0到30的数字矩阵,但我特别需要将数字转换为符号,我一直在考虑表情符号,因为它们现在很常用。

我的问题是,我应该如何从文件中读取整数矩阵,将整数矩阵转换为具有不同表情符号的矩阵(最终,从我选择的列表中),并将输出放入另一个文本文件中,这次包含表情符号?这可能吗?我想应该是的,但是我该怎么做呢?有人有什么建议吗?

我面临的问题实际上是表情符号unicode,在控制台上接收消息时,我似乎没有成功。我只是得到了"?"而不是笑脸。但这种情况只发生在他们身上,ASCII字符似乎工作得更好。ASCII字符的问题是,我再次需要有表现力的图像,而不是数字或随机的管道形状。

有一个代码:

%make sure you have the "1234567.jpg" in the same location as the .m file
imdata = imread('1234567.jpg');
[X_no_dither,map] = rgb2ind(imdata,30,'nodither');
imshow(X_no_dither,map)
% and there I try to put the output in a text file
dlmwrite('result.txt',X_no_dither,'delimiter',"t");

好的,文本文件中的输出是:

0 0 0 26 26。。。等

我想知道我该怎么写代码,这样我就会得到表情符号而不是数字。

这就是我希望输出的样子。但是,从我昨天的尝试来看,我无法在打印它们时不收到警告/错误。

您需要做的是创建一个包含30个表情符号的表(此文档页面可能会有所帮助),然后索引到该表中。我正在使用上面页面中所示的compose功能,也应该可以将粘贴表情复制到m文件中。如果你在MATLAB的控制台上看不到表情符号,请更改你使用的字体。

例如:

table = [compose("xD83DxDE0E"),
"B",  % find the utf16 encoding for your emojis, or copy-paste them in
"C",
"D",
...
];
output = table(X_no_dither + 1);
f = fopen('result.txt', 'wt');
for ii = 1:size(output, 1)
fprintf(f, '%s', output(ii, :));
fprintf(f, 'n');
end
fclose(f);

这将以UTF16格式写出文件,这就是MATLAB所使用的格式。如果你在Windows上,这可能对你很有用。在其他平台上,您可能希望保存为UTF8,这可以通过在UTF8模式下打开文件来实现:

f = fopen('result.txt', 'wt', 'native', 'UTF-8');

请注意,即使您无法在MATLAB命令窗口中显示表情符号,在编辑器中打开文本文件也会正确显示表情符号。

相关内容

  • 没有找到相关文章