草庐IT

【数字图像处理】实验二 图像增强(MATLAB实现)

天的命名词 2023-09-26 原文

目录

一、实验意义及目的

二、实验内容

三、Matlab 相关函数介绍

四、算法原理

五、参考代码及扩展代码流程图 

(1)参考代码流程图

(2)扩展代码流程图

六、参考代码

七、实验要求

(1)对以上处理变换参数,查看处理效果;

(2)更改伪彩色增强方法为热金属编码或彩虹编码伪彩色处理

(3)设计不同的平滑滤波、锐化滤波方法,查看处理效果

(4)自行设计方法,实现对彩色图像增强处理。(Python、opencv实现)


一、实验意义及目的

1 )进一步掌握图像处理工具 Matlab ,熟悉基于 Matlab 的图像处理函数。
(2)掌握各种图像增强方法。

二、实验内容

打开一幅彩色图像 Image1 ,使用 Matlab 图像处理函数,对其进行下列变换:
1 )将 Image1 灰度化为 gray ,统计并显示其灰度直方图;
(2)对 gray 进行分段线性变换;
(3)对 gray 进行直方图均衡化;
(4)对 gray 进行伪彩色增强;
(5)对 gray 添加噪声并平滑;
(6)对 gray 利用 Sobel 算子锐化;
(7)实验要求中的拓展内容。

三、Matlab 相关函数介绍

1imhist 函数
  功能:统计变显示图像的直方图。
  调用格式:
  imhist(I) :显示图像 I 的直方图。
  imhist(I, n) :显示图像 I 的直方图, n 指定直方图中的列数。
  [COUNTS,X] = imhist(...) :返回直方图数据向量 COUNTS 和相应的色彩值向量 X
(2)histeq 函数
  功能:直方图均衡化
  调用格式:
  J = histeq(I,hgram) :将图像 I 的直方图变成用户指定的向量 hgram hgram 中的各元素值
  域为 [0,1]
  J = histeq(I,N) :对原始图像 I 进行直方图均衡化, N 为输出图像的灰度技术,默认 N
  64
(3)imadjust 函数
  功能:调整图像灰度值或颜色映射表,增加图像的对比度。
  调用格式: J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA) :调整图像     I   的灰度值;[LOW_IN; HIGH_IN] 指定原始图像中要变换的灰度范围; [LOW_OUT; HIGH_OUT]  指定变换后的灰度范围;低于 LOW_IN 、高于 HIGH_IN 的采取截取式;都可以使用空的矩阵 [],默认值是 [0 1] GAMMA 为标量,指定描述值 I 和值 J 关系的曲线形状,如果小于 1 ,此映射偏重更高数值(明亮)输出,如果 gamma 大于 1 ,此映射偏重更低数值(灰暗)输出如果省略此参数,默认为(线性映射)。 NEWMAP = imadjust(MAP,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA):调整索引图像的颜色表 map ,其他参量同上。
RGB2 = imadjust(RGB1,...) :对 RGB 图像 RGB1 R G B 分量进行调整。
(4)imnoise 函数
  J = imnoise(I,type,parameters) :按指定类型在图像 I 上添加噪声; type 表示噪声类型,
  parameters 为其所对应参数,可取值如表 1 所示:
(5fspecial 函数
  h=fspecial(type,parameters) :创建指定类型和参数的二维滤波器 h ,如表 2 所示:

(6)filter2 函数
  Y = filter2(B,X,shape) :使用二维 FIR 滤波器 B 对矩阵 X 进行滤波; shape 指定返回值 Y
  的形式, ‘full’ Y 的维数大于 X ‘same’ Y 的维数等于 X ‘valid’ Y 的维数小于 X ;默认 为     same
(7)imfilter 函数
  B=imfilter(A,H,option1,option2,…) :根据指定的属性 option1 option2… 等,使用多维滤波
  器 H 对图像 A 进行滤波, H 常由函数 fspecial 输出得到。属性参数如表 3 所示:

(8)medfilt2 函数
 B = medfilt2(A,[m n]]) :用 [m n] 大小的滤波器对图像 A 进行中值滤波,输出图像为 B ,滤
 波器大小默认为 3×3
(9)edge 函数
  BW = edge(I) :对灰度或二值图像 I 进行边缘检测,检测后图像为二值图像 BW ,边界处
  取值为 1 ,否则为 0 。缺省情况下, edge 函数使用 Sobel 算子检测边缘,也可以指定算子。
  BW = edge(I,'sobel') BW = edge(I,'prewitt') BW = edge(I,'roberts')
  BW = edge(I,'log') BW = edge(I,'canny') 引号内为指定算子。
  BW = edge(I,'sobel',thresh) thresh 指定保留边缘的阈值,若为 0 edge 函数自动选择该值。

四、算法原理

  图像增强是一种基本的图像处理技术,主要是为了改善图像的质量以及增强感兴趣的部分,改善图像的视觉效果或者使图像变得更加有利于计算机处理。相关的图像增强技术有针对单个像素点的点运算,也有针对像素局部领域的模板运算,根据模板运算的具体功能还可以分为图像平滑、图像锐化等。

  灰度级变换就是借助于变换函数将输入的像素灰度值映射成一个新的输出值。直方图修正法的基本原理就是通过构造灰度级变换函数来改造原图像的直方图,使变换后的图像的直方图达到一定要求。而基于照度—反射模型的图像增强,通常将自然景象图像拆解成照明函数于反射函数的乘积。其算法原理,通常会借助于对数变换,将乘积转换为两个分量相加,设计函数,对高频与低频成分产生不同影响以达到图像增强效果。伪彩色增强则是一种灰度到彩色的映射技术,其目的是把灰度图像的不同灰度级按照线性或非线性映射成不同的颜色,以提高图像内容的可辨识度,达到增强的效。

  图像平滑,通常把抑制或者消除图像中存在的噪声而改善图像质量的过程称为土象的平滑。图像平滑方法大致分为两大类:空域法和频域法。空域法主要借助模板运算,在像素点领域内,利用噪声像素点特性进行滤波;频域法是指对图像进行正交变换,利用噪声对应高频信息的特点进行滤波。

  图像锐化,其目的在于加强图像中景物的边缘和轮廓,突出图像中的细节或增强被模糊了的细节。图像的边缘主要有三种类型:细线型、突变型、渐变型。通过分析边缘变化曲线 和其一二阶微分曲线,即可知边缘

五、参考代码及扩展代码流程图 

(1)参考代码流程图

(2)扩展代码流程图

六、参考代码

参考代码中实现了彩色图像的灰度化、灰度图像的直方图统计、分段线性变换、直方图
均衡化、伪彩色增强、添加噪声与中值滤波、 Sobel 算子滤波。
Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
imhist(gray); 
[h,w]=size(gray); 
NewImage1=zeros(h,w); 
a=80/256; b=180/256; c=30/256; d=220/256;
for x=1:w
 for y=1:h
 if gray(y,x)<a 
 NewImage1(y,x)=gray(y,x)*c/a;
 elseif gray(y,x)<b
 NewImage1(y,x)=(gray(y,x)-a)*(d-c)/(b-a)+c;
 else
 NewImage1(y,x)=(gray(y,x)-b)*(255-d)/(255-b)+d;
 end 
 end
end
figure,imshow(NewImage1),title('分段线性变换');
NewImage2=histeq(gray);
figure,imshow(NewImage2),title('直方图均衡化');
NewImage3=zeros(h,w,3);
for x=1:w
 for y=1:h
 if gray(y,x)<64/256
 NewImage3(y,x,1)=0;
 NewImage3(y,x,2)=4*gray(y,x);
 NewImage3(y,x,3)=1;
 elseif gray(y,x)<128/256
 NewImage3(y,x,1)=0;
 NewImage3(y,x,2)=1;
 NewImage3(y,x,3)=2-4*gray(y,x);
 elseif gray(y,x)<192/256
 NewImage3(y,x,1)=4*gray(y,x)-2;
 NewImage3(y,x,2)=1;
 NewImage3(y,x,3)=0;
 else
 NewImage3(y,x,1)=1;
 NewImage3(y,x,2)=4-4*gray(y,x);
 NewImage3(y,x,3)=0;
 end
 end
end
figure,imshow(NewImage3);
 
noiseIsp=imnoise(gray,'salt & pepper',0.1); 
noiseIg=imnoise(gray,'gaussian'); 
result1=medfilt2(noiseIsp); 
result2=medfilt2(noiseIg);
figure;
subplot(121),imshow(result1),title('椒盐噪声3×3中值滤波');
subplot(122),imshow(result2),title('高斯噪声3×3中值滤波');
H1=[-1 -2 -1;0 0 0;1 2 1]; 
H2=[-1 0 1;-2 0 2;-1 0 1]; 
R1=imfilter(gray,H1); 
R2=imfilter(gray,H2);
edgeImage=abs(R1)+abs(R2); 
sharpImage=gray+edgeImage; 
figure;
subplot(121),imshow(edgeImage),title('Sobel梯度图像'); 
subplot(122),imshow(sharpImage),title('Sobel锐化图像');
程序的运行效果如下:

 

七、实验要求

1. 熟悉 Matlab 函数,读懂参考代码;
2. 拓展内容:

1)对以上处理变换参数,查看处理效果;

(2)更改伪彩色增强方法为热金属编码或彩虹编码

伪彩色处理

伪彩色增强:把一幅黑白域图像的不同灰度级映射为一幅彩色图像的技术手段。

伪彩色增强有很多种方法,而下面的增强方法则是使用的空间域灰度级-彩色变换法。

空间域灰度级-彩色变换法:可以将灰度图像变为具有多种颜色渐变的连续彩色图像,变换后的图像视觉效果较好,主要色相是将灰度图像f(x,y)送入具有不同变换性质的红、绿、蓝3个变换器,相对应的产生3个不同的输入fR(x,y),fG(x,y),fB(x,y)将它们对应地作为彩色图像的红绿蓝三个色彩分量合成一副彩色图像。

彩虹编码和热金属编码是其中的两种变化函数。

热金属编码

Image1=imread('lotus.bmp');
    
%转换为灰度
gray=rgb2gray(Image1);
[h,w]=size(gray);
%新图像的矩阵
NewImage4=zeros(h,w,3);
for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage4(x,y,1)=255*(gray(x,y)-64)/64;
        else
        NewImage4(x,y,1)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<128
        NewImage4(x,y,2)=0;
        elseif gray(x,y)<192
        NewImage4(x,y,2)=255*(gray(x,y)-128)/64;
        else
        NewImage4(x,y,2)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,3)=255*gray(x,y)/64;
        elseif gray(x,y)<96
        NewImage4(x,y,3)=255;
        elseif gray(x,y)<128
        NewImage4(x,y,3)=255*(128-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage4(x,y,3)=0;
        else
        NewImage4(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
end
imshow(NewImage4),title('热金属编码')

  彩虹编码

Image1=imread('lotus.bmp');
    
%转换为灰度
gray=rgb2gray(Image1);
[h,w]=size(gray);
%新图像的矩阵
NewImage3=zeros(h,w,3);
for x=1:h
    for y=1:w
        if gray(x,y)<96
        NewImage3(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage3(x,y,1)=255*(gray(x,y)-96)/32;
        else
        NewImage3(x,y,1)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,2)=0;
        elseif gray(x,y)<64
        NewImage3(x,y,2)=255*(gray(x,y)-32)/32;
        elseif gray(x,y)<128
        NewImage3(x,y,2)=255;
        elseif gray(x,y)<192
        NewImage3(x,y,2)=255*(192-gray(x,y))/64;
        else
        NewImage3(x,y,2)=255*(gray(x,y)-192)/64;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,3)=255*gray(x,y)/32;
        elseif gray(x,y)<64
        NewImage3(x,y,3)=255;
        elseif gray(x,y)<96
        NewImage3(x,y,3)=255*(96-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage3(x,y,3)=0;
        else
        NewImage3(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
end
imshow(NewImage3),title('彩虹编码')

(3)设计不同的平滑滤波、锐化滤波方法,查看处理效果

    1.平滑滤波:

Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1); 
noisegaus=imnoise(gray,'gaussian'); %高斯噪声 
figure; 
subplot(121),imshow(gray),title('原图'); 
subplot(122),imshow(noisegaus),title('高斯噪声图'); 
result1=filter2(fspecial('average',3),noisegaus); 
figure; 
imshow(result1),title('3*3 均值滤波');
gausFilter=fspecial('gaussian',[2*3+1 2*3+1],0.6); 
result2 = imfilter(noisegaus,gausFilter,'conv'); 
figure; 
imshow(result2),title('sigmal=0.6 高斯滤波') 
result3 = medfilt2(noisegaus); 
figure; 
imshow(result3),title('3*3 中值滤波'); 
 
image2 = imread('lotus.bmp'); 
image2 = imnoise(image2,'gaussian'); 
Fimage = fftshift(fft2(double(image2))); 
[N M] = size(Fimage); 
g = zeros(N,M); 
r1 = floor(M/2); r2=floor(N/2); 
d0 = [5 11 45 68]; 
for i = 1:4 
    for x = 1:M 
        for y = 1:N 
            d = sqrt((x-r1)^2+(y-r2)^2); 
            if d<=d0(i) 
                h=1; 
            else
                h=0;
            end
            g(y,x) = h*Fimage(y,x); 
        end
    end
    g = real(ifft2(ifftshift(g))); 
    figure,imshow(uint8(g)),title(['理想低通滤波 D0=',num2str(d0(i))]); 
end

运行结果:

2.锐化滤波

Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
H1=[-1 -2 -1;0 0 0;1 2 1];
H2=[-1 0 1;-2 0 2;-1 0 1];
R1=imfilter(gray,H1);
R2=imfilter(gray,H2);
edgeImage=abs(R1)+abs(R2); 
sharpImage=gray+edgeImage; 
figure; 
subplot(121),imshow(edgeImage),title('Sobel 梯度图像'); 
subplot(122),imshow(sharpImage),title('Sobel 锐化图像 ');
H1=[1 0;0 -1]; H2=[0 1;-1 0]; R1=imfilter(gray,H1); 
R2=imfilter(gray,H2); edgeImage=abs(R1)+abs(R2);
sharpImage=gray+edgeImage; 
figure; subplot(121),imshow(edgeImage),title('Roberts 梯度图像 '); 
subplot(122),imshow(sharpImage),title('Roberts 锐化图像 ');
H1=[-1 -1 -1;0 0 0;1 1 1];
H2=[-1 0 1;-1 0 1;-1 0 1]; 
R1=imfilter(gray,H1); 
R2=imfilter(gray,H2); 
edgeImage=abs(R1)+abs(R2); 
sharpImage=gray+edgeImage; 
figure; 
subplot(121),imshow(edgeImage),title('Prewitt 梯度图像 '); 
subplot(122),imshow(sharpImage),title('Prewitt 锐化图像 ');
H = fspecial('laplacian',0);
R = imfilter(gray,H); 
edgeImage = abs(R); 
H1 = [0 -1 0;-1 5 -1;0 -1 0]; 
sharpImage = imfilter(gray,H1);
figure;
subplot(121),imshow(edgeImage),title('Laplacian 滤波图 像'); 
subplot(122),imshow(sharpImage),title('Laplacian锐化图 像');
BW = edge(gray,'log'); 
H = fspecial('log',7,1); 
R = imfilter(gray,H); 
edgeImage = abs(R); 
sharpImage = gray+edgeImage; 
figure;
subplot(131),imshow(BW),title('LOG 边缘检测图像'); 
subplot(132),imshow(edgeImage),title('LOG 梯度图像'); 
subplot(133),imshow(sharpImage),title('LOG 锐化图像');
BW = edge(gray,'canny');
figure; 
imshow(BW),title('Canny 边缘检测');

运行结果:

 Sobel 算子效果图

 Roberts 算子效果图 Prewitt 算子效果图 

  Laplacian 算子效果图

 LOG 算子效果图

 Canny 算子效果图

(4)自行设计方法,实现对彩色图像增强处理。(Python、opencv实现)

import matplotlib.pyplot as plt
import cv2 as cv
import numpy as np

# 显示汉字用
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 定义坐标数字字体和大小
def label_def():
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False


if __name__ == '__main__':
    # 读取图片
    img_orig = cv.imread('lotus.bmp', 1)  # 读取彩色图片
    # 伽马变换处理
    img_gama = np.power(img_orig.astype(np.float32), 1.5)  # 图像较亮,若采用幂率变换,y>1,压缩高灰度级
    temp1 = img_gama - np.min(img_gama)
    img_gama = temp1 / np.max(temp1)
    # 显示所用的变换函数
    x1 = np.linspace(img_orig.min(), img_orig.max(), num=200)
    y1 = np.power(x1, 1.5)  # 伽马函数

    plt.subplot(221), plt.title('原图像'), plt.imshow(cv.cvtColor(img_orig, cv.COLOR_BGR2RGB)), plt.axis('off')
    plt.subplot(223), plt.title('伽马变换'), plt.imshow(cv.cvtColor(img_gama, cv.COLOR_BGR2RGB)), plt.axis('off')
    plt.subplot(224), plt.title('s=r**(1.5)'), plt.plot(x1, y1), plt.grid, label_def()
    plt.show()

运行结果:

有关【数字图像处理】实验二 图像增强(MATLAB实现)的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  3. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  4. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  5. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  6. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  7. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  8. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  9. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  10. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

随机推荐