Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何运行皮肤检测_Matlab - Fatal编程技术网

Matlab 如何运行皮肤检测

Matlab 如何运行皮肤检测,matlab,Matlab,我试图用这个算法检测皮肤,但我只得到了一张黑白图像 我尝试使用cat(im1,im1,im1)组合我的图像,但结果是它只会使皮肤变粉红色 im=double(im); im=colorspace('HSL您发布的代码的前提是,您可以执行颜色阈值,以隔离与皮肤相对应的HSL颜色空间的子集 黑白图像基本上没有颜色信息,因此这种方法对您没有帮助。试试这个 function main clc, clear A = imread('2000.jpg'); subplot(1,2,1) imshow(A)

我试图用这个算法检测皮肤,但我只得到了一张黑白图像

我尝试使用cat(im1,im1,im1)组合我的图像,但结果是它只会使皮肤变粉红色

im=double(im);

im=colorspace('HSL您发布的代码的前提是,您可以执行颜色阈值,以隔离与皮肤相对应的HSL颜色空间的子集

黑白图像基本上没有颜色信息,因此这种方法对您没有帮助。

试试这个

function main
clc, clear

A = imread('2000.jpg');
subplot(1,2,1)
imshow(A)

RGB = [230 210 200];      % color you want
e = 40;                   % color shift     

B = pix_in(A,RGB,e);
B = B + 255.*uint8(~B);   % choosing white background
subplot(1,2,2)
imshow(B)

end

function B = pix_in(A,RGB,e)
    % select specific pixels in image
    % A - color image (3D matrix uint8)
    % RGB - [R G B] - color to select
    % e - color shift/deviation

A = double(A);              % for same class operations (RGB - double)
[m, n, ~] = size(A);
RGB = reshape(RGB,1,1,3);   
RGB = repmat(RGB,m,n,1);    % creating 3D matrix
b = abs(A-RGB) < e;         % logical 3D
b = sum(b,3) == 3;          % if [R,G,B] of a pixel in range
B = A.*repmat(b,1,1,3);     % selecting pixels those in range
B = uint8(B);

% cheking one pixel (loop version)
% B = [0 0 0];
% for k = 1:3
%     t = double(A(1,1,k));
%     B(k) = abs(t-RGB(k)) < e;
% end
% if sum(B) == 3, b = true; 
% else b = false;
% end

end
主功能
clc,清除
A=imread('2000.jpg');
子地块(1,2,1)
imshow(A)
RGB=[230 210 200];%您想要的颜色
e=40;%色移
B=pix_in(A,RGB,e);
B=B+255.*uint8(~B);%选择白色背景
子地块(1,2,2)
imshow(B)
结束
函数B=pix_in(A,RGB,e)
%选择图像中的特定像素
%A-彩色图像(3D矩阵uint8)
%RGB-[RGB]-要选择的颜色
%e-颜色偏移/偏差
A=双精度(A);%用于同一类操作(RGB-双精度)
[m,n,~]=尺寸(A);
RGB=重塑(RGB,1,1,3);
RGB=repmat(RGB,m,n,1);%创建三维矩阵
b=abs(A-RGB)
原始图像

下面是脚本生成的内容

试试
imshow(ims.*im)