m0_63235741 2021-10-23 15:47 采纳率: 100%
浏览 45
已结题

谁可以帮我写一个MATLAB问题啊

16.各种材料提交需要不同底色的登记照,因此登记照换底可以满足不同场景需求。现有一张“ID_Photo”文件名的登记照,要求将蓝色背景换成红色背景,另外,需要排列成3×4的版面供打印

img

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-23 20:35
    关注

    你好,差不多颜色替换了:

    I1 = double(imread('a.jpg'));
    [m,n,p] = size(I1);
    I = reshape(I1, m*n, p);
    blue = [67,142,219]; blue = blue/max(blue);
    red = [255,0,0];
    q =  I./repmat(max(I,[],2),1,p);
    Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.1;
    blue = mean(q(Q,:));
    Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.1;
    I(Q,:) = repmat(red, sum(Q), 1);
    blue = mean(q(Q,:));
    Q =  sqrt(sum((q-repmat(blue,m*n,1)).^2,2))<=0.12;
    I(Q,:) = repmat(red, sum(Q), 1);
    I = reshape(I, size(I1,1), size(I1,2), size(I1,3));
    figure(1);clf
    Y = zeros(size(I)); Ydct = Y;
    I = I/255;
    s = 3; r = 3;
    Y(:,:,1)= medfilt2(I(:,:,1),[s,r]);
    Y(:,:,2)= medfilt2(I(:,:,2),[s,r]);
    Y(:,:,3)= medfilt2(I(:,:,3),[s,r]);
    Y = Y*255;
    Y = uint8(Y);
    imshow(Y);
    
    figure(2);clf
    Y = Y(1:2:end,1:2:end,:);
    [m,n,p] = size(Y);
    ratio = floor(size(Y,2)/60);
    Z = uint8(255*ones(m+2*ratio, n+2*ratio,p));
    Z(ratio+1:m+ratio,ratio+1:n+ratio,:) = Y;
    [K,P,R] = size(Z);
    M = 3; N = 4;
    A = uint8(zeros(K*M,P*N,R));
    for i = 1:M
        for j = 1:N
            A((i-1)*K+1:i*K,(j-1)*P+1:j*P,:) = Z;
        end
    end
    imshow(A)
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月23日
  • 已采纳回答 10月23日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多