最近流行的网络迷恋的照片做头像,闲来无事,取matlab获取一个建设者,它可以产生包括0-9以及99+OCD。

原理很easy,图叠加,这里为了降低文件,将数字图片保存在.mat二进制文件里。

=====================================================================================================

代码例如以下:

clear,clc
%% open image file
[fn,pn,fi]=uigetfile('*.bmp;*.png;*.jpg;*.jpeg','choose image');
img=imread([pn fn]);
%% process image 
width = size(img,1);%image width
height = size(img,2);%image height
minlength = min([width,height]);%min of width and height
circle_d = floor(minlength*(1-0.618));%circle radius
circle_x_end = circle_d;
circle_y_start = height - circle_d + 1;
%circle center
circle_center_x = circle_x_end/2;
circle_center_y = (circle_y_start+height)/2;
%draw circle--------------------------------
for i=1:circle_x_end
    for j=circle_y_start:height
        if((i-circle_center_x)^2+(j-circle_center_y)^2 <= (circle_d/2)^2)
            img(i,j,1) = 255;
            img(i,j,2) = 0;
            img(i,j,3) = 0;
        end
    end
end
% draw number-------------------------------
load number.mat
num = input('Input the number to add to the image:');
while(num<0 || num>9)
    num = input('Input error,out of range(0-9),reinput the number:'); 
end
%-------------------------------------------
%scale the nu7mber image
var_name = ['number' num2str(num)];
eval([var_name '=imresize(' var_name ',[circle_x_end,height - circle_y_start+1]);']);
%sharp the image
eval(['index = find(' var_name '>0);']);
for k=1:length(index)
    eval([var_name '(index(k)) = 255;']);
end
%add the value to the 2nd and 3rd layer
eval(['img(1:circle_x_end,circle_y_start:height,2) = img(1:circle_x_end,circle_y_start:height,2)+' var_name ';']);
eval(['img(1:circle_x_end,circle_y_start:height,3) = img(1:circle_x_end,circle_y_start:height,3)+' var_name ';']);
%% show image
imshow(img);
%% save image
dotindex = max(find(fn=='.'));
imwrite(img,[fn(1:dotindex-1) ' with number ' num2str(num) fn(dotindex:end)]);

=====================================================================================================

另外数字的二进制文件随代码一起上传在此(点击此处下载

效果图例如以下:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Matlab强迫症产生的图像的更多相关文章

  1. matlab之原始处理图像几何变换

    (一)图像几何变换理论知识 (1)图像的平移与比例 图像的平移很简单,平移前后的坐标分别为(x,y)和(x',y'),则满足的关系式为 x'= x +Tx: y'= y +Ty: 其中Tx与Ty分别为 ...

  2. matlab练习程序(图像球面化)

    十一没什么事干,接着看图像算法. 这个球面化算法最初是在ps上的球面化滤镜中看到的,感觉挺有意思,就研究了一下. 算法的详细推导可以在这篇博客中找到,我比较懒,只在纸上推了一遍,就不在博客上编辑了. ...

  3. matlab各类数据l图像之间的转化

    matlab各类数据图像之间的转化 rgb类型转化为二值的步骤例如以下: 1.採用命令im2double将rgb类型转化三维的double >> str='E:\programing\Ei ...

  4. matlab学习笔记,图像分块

    clc; clear all; close all; I = imread('E:\matlab\files-images\tomsen512.jpg'); rs = size(I, 1);% 行数c ...

  5. MATLAB解析PFM格式图像

    http://www.p-chao.com/ja/2016-09-27/matlab%E8%A7%A3%E6%9E%90pfm%E6%A0%BC%E5%BC%8F%E5%9B%BE%E5%83%8F/ ...

  6. Matlab图像处理系列4———图像傅立叶变换与反变换

    注:本系列来自于图像处理课程实验.用Matlab实现最主要的图像处理算法 1.Fourier变换 (1)频域增强 除了在空间域内能够加工处理图像以外.我们还能够将图像变换到其它空间后进行处理.这些方法 ...

  7. matlab练习程序(图像投影到点云)

    最近接触点云比较多,如果把图像投影到点云应该挺有意思. 首先需要载入图像,然后做个球或其他什么形状的点云,这里可以参考球坐标公式. 最后通过pcshow将像素输出到点云上即可. 原图: 投影后的点云: ...

  8. matlab 视频转换到图像并保存

    图像处理中像Adas.车辆检测等都需要采用视频文件比较好处理一点,利用帧差法.背景减法.光流法等,那么将视频文件转换到图像文件怎么做呢?话不多说,见代码一目了然: %================= ...

  9. matlab练习程序(图像马赛克)

    处理原理就是将邻域像素平均值赋给邻域中的所有像素. 这里将处理方法分为了带线条和不带线条,带线条处理后的视觉效果要好些. 原图: 处理结果(不带线条): 处理结果(带线条): 代码处理的是带线条的情况 ...

随机推荐

  1. 14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁

    14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个章节建立关于死锁的概念信息,它解释如何组织数据库操作来减少死锁和随后的错误处理: D ...

  2. uva-211-The Domino Effect

    http://uva.onlinejudge.org/external/2/211.html http://uva.onlinejudge.org/external/2/211.pdf 题意:每一种骨 ...

  3. 浅谈 Python 程序和 C 程序的整合

    源地址:http://www.ibm.com/developerworks/cn/linux/l-cn-pythonandc/ 概览 Python 是一种用于快速开发软件的编程语言,它的语法比较简单, ...

  4. zoj 2822 Sum of Different Primes (01背包)

    ///给你n 求他能分解成多少个的不同的k个素数相加之和 ///01背包,素数打表 # include <stdio.h> # include <algorithm> # in ...

  5. hdu4908(中位数)

    传送门:BestCoder Sequence 题意:给一个序列,里面是1-N的排列,给出m,问以m为中位数的奇数长度的序列个数. 分析:先找出m的位置,再记录左边比m大的状态,记录右边比m大的状态,使 ...

  6. scala akka 修炼之路5(scala特质应用场景分析)

    scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中. scala中特质(trait)是一个非常实用的特性,在程序设计中 ...

  7. 西南民大oj(两园交求面积)

    西南民大oj:http://www.swunacm.com/acmhome/welcome.do?method=index 我的几何不可能那么可爱 时间限制(普通/Java) : 1000 MS/ 3 ...

  8. C#应用Newtonsoft.Json.dll,控制json的时间格式

    原文:C#应用Newtonsoft.Json.dll,控制json的时间格式 var aIsoDateTimeConverter = new IsoDateTimeConverter();aIsoDa ...

  9. cocos2d-x博客网站推荐和牛逼的教程

    Cocos2d-x网站列表 CocoaChina(官方网站,不解释)www.cocoachina.com/ 泰然网(貌似最近有很多不错的文章,不过早期的文章质量一般)www.ityran.com/ C ...

  10. Knockout应用开发指南 第二章:监控属性(Observables)

    原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...