• Matlab强迫症产生的图像


    最近流行的网络迷恋的照片做头像,闲来无事,取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)]);
    
    

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

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


    效果图例如以下:







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

  • 相关阅读:
    Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)
    android 旋转手机的时候,如何忽略onCreate再次被系统调用?
    在iOS 8中使用UIAlertController
    09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例
    一些工具的版本问题 valgrind gdb 以及编译
    C struct __attribute__ ((__packed__))
    C++ class 只允许堆创建/只允许栈创建
    Shell 字符串操作
    存储系统的分类
    ssh 到服务器然后输入中文保存到本地变成乱码
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4724512.html
Copyright © 2020-2023  润新知