精华内容
下载资源
问答
  • 2022-03-02 15:04:23

    基础知识:

    1:遥感高分影像,一般默认为tif或tiff 格式,均为16位(uint16)。

    matlab:

     a) tiff的读取,需要用到geotiffread()函数,如:

          [data,R] =geotiffread('D:\GF1_WFV1_E99.4_N36.3_20140716_L2A0000278923.tiff');

                    #其中data 为图像数据,R为图像的通道数

    b) tif的读取,直接用imread()函数即可,如:

           img = imread('D:\1.tif');

    c)显示:四波段数据无法在matlab中直接imshow(),matlab输出图像要求最高三波段,常用cat()函数截取三波段,再输出。如:

                    

            img=cat(3,GF1data(:,:,1),GF1data(:,:,2),GF1data(:,:,3));    //此时得到三波段的uint16数据。
            img_gray = rgb2gray(img);    //得到灰度图,单波段的uint16
    
            imshow(img_gray ,[]);     //正常显示

    python:

    a)tiff的读取,建议引入gdal库,具体可参考搜索引擎!

    b)tif 的读取,直接cv2.imread()或os.imread(),如:

                

              img = cv2.imread('C:/MU/img1_12.tif',-1)

    注:  尾巴加了-1,是为了保证img以原始uint16保存,否则会python系统自动将读取的16位改为8位,自动压缩数据,必定带来一些信息损失,可能影像结果也可能不影响!

    c)显示: python无法直接输出超过三波段的影像,且只有uint8位的数据才能正常显示,为了让图像显示更符合人类视觉,我们经常做的就是转换一下:             

                 img = np.uint8(255.0 * (img - np.min(img)) / (np.max(img) - np.min(img)))
    
                  # 归一化(normalization )操作,uint8后的img,直接:
    
                 cv2.imshow('img_uint8',img)     #即可正常显示图片

    更多相关内容
  • .svs文件转换成JPG文件

    2016-11-07 16:10:06
    数字病理图像全扫描的.svs文件转换成.jpg文件的matlab代码,一般.svs不方便直接处理,需要进行转换格式,动态积分改成静态积分
  • 图片的四种格式.jpg、.gif、.png、.bmp

    千次阅读 2019-03-16 10:42:27
    jpg图片格式、gif动态图片、png打印、bmp位图 放大不失真。 二、具体来讲 1、JPG格式 是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复...

    一、简单来说

            jpg图片格式、gif动态图片、png打印、bmp位图 放大不失真。

    二、具体来讲

    1、JPG格式

    是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,

    如果追求高品质图像,不宜采用过高压缩比例。

    但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。

    而且JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。

    JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。

    2、GIF

    是用于压缩具有单调颜色和清晰细节的图像(如线状图、徽标或带文字的插图)的标准格式。
    GIF分为静态GIF和动画GIF两种,支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF格式。其实GIF是将多幅图像保存为一个图像文件,从而形成动画,所以归根到底GIF仍然是图片文件格式。但GIF只能显示256色。
    GIF主要分为两个版本,即GIF 89a和GIF 87a:
    GIF 87a:是在1987年制定的版本
    GIF 89a:是1989年制定的版本。在这个版本中,为GIF文档扩充了图形控制区块、备注、说明、应用程序编程接口等四个区块,并提供了对透明色和多帧动画的支持
    GIF格式自1987年由CompuServe公司引入后,因其体积小而成像相对清晰,特别适合于初期慢速的互联网,而从此大受欢迎。它采用无损压缩技术,只要图像不多于256色,则可既减少文件的大小,又保持成像的质量。(当然,现在也存在一些hack技术,在一定的条件下克服256色的限制,具体参见真彩色)然而,256色的限制大大局限了GIF文件的应用范围,如彩色相机等。(当然采用无损压缩技术的彩色相机照片亦不适合通过网络传输。)另一方面,在高彩图片上有着不俗表现的JPG格式却在简单的折线上效果差强人意。因此GIF格式普遍适用于图表,按钮等等只需少量颜色的图像(如黑白照片)。

    3、PNG

           是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。
    PNG图片文件一般应用于JAVA程序中,或网页或S60程序中是因为它压缩比高,生成文件容量小。
    使用彩色查找表或者叫做调色板可支持256种颜色的彩色图像。
    流式读/写性能(streamability):图像文件格式允许连续读出和写入图像数据,这个特性很适合于在通信过程中生成和显示图像。
    逐次逼近显示(progressive display):这种特性可使在通信链路上传输图像文件的同时就在终端上显示图像,把整个轮廓显示出来之后逐步显示图像的细节,也就是先用低分辨率显示图像,然后逐步提高它的分辨率。
    透明性(transparency):这个性能可使图像中某些部分不显示出来,用来创建一些有特色的图像。
    辅助信息(ancillary information):这个特性可用来在图像文件中存储一些文本注释信息。
    独立于计算机软硬件环境。
    使用无损压缩
    PNG文件格式中要增加下列GIF文件格式所没有的特性:
    每个像素为48位的真彩色图像
    每个像素为16位的灰度图像。
    可为灰度图和真彩色图添加α通道。
    添加图像的γ信息。
    使用循环冗余码(cyclic redundancy code,CRC)检测损害的文件。
    加快图像显示的逐次逼近显示方式。
    标准的读/写工具包。
    可在一个文件中存储多幅图像。

    4、BMP

            是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。
    由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。
    典型的BMP图像文件由四部分组成:
    1:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;
    2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;
    3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;
    4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。
    位图的类型:
    位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。DDB位图在早期的Windows系统(Windows 3.0以前)中是很普遍的,事实上它也是唯一的。然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB位图的一些固有的问题开始浮现出来了。比如,它不能够存储(或者说获取)创建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显示设备是否适合显示这张图片。为了解决这一难题,微软创建了DIB位图格式。
    设备无关位图 (Device-Independent Bitmap)
    DIB位图包含下列的颜色和尺寸信息:
    * 原始设备(即创建图片的设备)的颜色格式。
    * 原始设备的分辨率。
    * 原始设备的调色板
    * 一个位数组,由红、绿、蓝(RGB)三个值代表一个像素。
    * 一个数组压缩标志,用于表明数据的压缩方案(如果需要的话)。
    以上这些信息保存在BITMAPINFO结构中,该结构由BITMAPINFOHEADER结构和两个或更多个RGBQUAD结构所组成。BITMAPINFOHEADER结构所包含的成员表明了图像的尺寸、原始设备的颜色格式、以及数据压缩方案等信息。RGBQUAD结构标识了像素所用到的颜色数据。
    DIB位图也有两种形式,即:底到上型DIB(bottom-up),和顶到下型DIB(top-down)。底到上型DIB的原点(origin)在图像的左下角,而顶到下型DIB的原点在图像的左上角。如果DIB的高度值(由BITMAPINFOHEADER结构中的biHeight成员标识)是一个正值,那么就表明这个DIB是一个底到上型DIB,如果高度值是一个负值,那么它就是一个顶到下型DIB。注意:顶到下型的DIB位图是不能被压缩的。
    位图的颜色格式是通过颜色面板值(planes)和颜色位值(bitcount)计算得来的,颜色面板值永远是1,而颜色位值则可以是1、4、8、16、24、32其中的一个。如果它是1,则表示位图是一张单色位图(译者注:通常是黑白位图,只有黑和白两种颜色,当然它也可以是任意两种指定的颜色),如果它是4,则表示这是一张VGA位图,如果它是8、16、24、或是32,则表示该位图是其他设备所产生的位图。如果应用程序想获取当前显示设备(或打印机)的颜色位值(或称位深度),可调用API函数GetDeviceCaps(),并将第二个参数设为BITSPIXEL即可。
    显示设备的分辨率是以每米多少个像素来表明的,应用程序可以通过以下三个步骤来获取显示设备或打印机的水平分辨率:
    1. 调用GetDeviceCaps()函数,指定第二个参数为HORZRES。
    2. 再次调用GetDeviceCaps()函数,指定第二个参数为HORZSIZE。
    3. 用第一个返回值除以第二个返回值。即:DetDeviceCaps(hDC,HORZRES)/GetDeviceCaps(hDC,HORZSIZE);
    应用程序也可以使用相同的三个步骤来获取设备的垂直分辨率,不同之处只是要将HORZRES替换为VERTRES,把HORZSIZE替换为VERTSIZE,即可。
    调色板是被保存在一个RGBQUAD结构的数组中,该结构指出了每一种颜色的红、绿、蓝的分量值。位数组中的每一个索引都对应于一个调色板项(即一个RGBQUAD结构),应用程序将根据这种对应关系,将像素索引值转换为像素RGB值(真实的像素颜色)。应用程序也可以通过调用GetDeviceCaps()函数来获取当前显示设备的调色板尺寸(将该函数的第二个参数设为NUMCOLORS即可)。
    Win32 API支持位数据的压缩(只对8位和4位的底到上型DIB位图)。压缩方法是采用运行长度编码方案(RLE),RLE使用两个字节来描述一个句法,第一个字节表示重复像素的个数,第二个字节表示重复像素的索引值。有关压缩位图的详细信息请参见对BITMAPINFOHEADER结构的解释。
    应用程序可以从一个DDB位图创建出一个DIB位图,步骤是,先初始化一些必要的结构,然后再调用GetDIBits()函数。不过,有些显示设备有可能不支持这个函数,你可以通过调用GetDeviceCaps()函数来确定一下(GetDeviceCaps()函数在调用时指定RC_DI_BITMAP作为RASTERCAPS的标志)。
    应用程序可以用DIB去设置显示设备上的像素(译者注:也就是显示DIB),方法是调用SetDIBitsToDevice()函数或调用StretchDIBits()函数。同样,有些显示设备也有可能不支持以上这两个函数,这时你可以指定RC_DIBTODEV作为RASTERCAPS标志,然后调用GetDeviceCaps()函数来判断该设备是否支持SetDIBitsToDevice()函数。也可以指定RC_STRETCHDIB作为RASTERCAPS标志来调用GetDeviceCaps()函数,来判断该设备是否支持StretchDIBits()函数。
    如果应用程序只是要简单的显示一个已经存在的DIB位图,那么它只要调用SetDIBitsToDevice()函数就可以。比如一个电子表格软件,它可以打开一个图表文件,在窗口中简单的调用SetDIBitsToDevice()函数,将图形显示在窗口中。但如果应用程序要重复的绘制位图的话,则应该使用BitBlt()函数,因为BitBlt()函数的执行速度要比SetDIBitsToDevice()函数快很多。
    设备相关位图 (Device-Dependent Bitmaps)
    设备相关位图(DDB)之所以现在还被系统支持,只是为了兼容旧的Windows 3.0软件,如果程序员现在要开发一个与位图有关的程序,则应该尽量使用或生成DIB格式的位图。
    DDB位图是被一个单个结构BITMAP所描述,这个结构的成员标明了该位图的宽度、高度、设备的颜色格式等信息。
    DDB位图也有两种类型,即:可废弃的(discardable)DDB和不可废弃的(nondiscardable)DDB。可废弃的DDB位图就是一种当系统内存缺乏,并且该位图也没有被选入设备描述表(DC)的时候,系统就会把该DDB位图从内存中清除(即废弃)。不可废弃的DDB则是无论系统内存多少都不会被系统清除的DDB。API函数CreateDiscardableBitmap()函数可用于创建可废弃位图。而函数CreateBitmap()、CreateCompatibleBitmap()、和CreateBitmapIndirect()可用于创建不可废弃的位图。
    应用程序可以通过一个DIB位图而创建一个DDB位图,只要先初始化一些必要的结构,然后再调用CreateDIBitmap()函数就可以。如果在调用该函数时指定了CBM_INIT标志,那么这一次调用就等价于先调用CreateCompatibleBitmap()创建当前设备格式的DDB位图,然后又调用SetDIBits()函数转换DIB格式到DDB格式。(可能有些设备并不支持SetDIBits()函数,你可以指定RC_DI_BITMAP作为RASTERCAPS的标志,然后调用GetDeviceCaps()函数来判断一下)。
    对应的数据结构:
    1:BMP文件组成
    BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
    2:BMP文件头(14字节)
    BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
    其结构定义如下:
    typedef struct tagBITMAPFILEHEADER
    {
    WORDbf Type; // 位图文件的类型,必须为BM(0-1字节)
    DWORD bfSize; // 位图文件的大小,以字节为单位(2-5字节)
    WORD bfReserved1; // 位图文件保留字,必须为0(6-7字节)
    WORD bfReserved2; // 位图文件保留字,必须为0(8-9字节)
    DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节)
    // 文件头的偏移量表示,以字节为单位
    } BITMAPFILEHEADER;
    3:位图信息头(40字节)
    BMP位图信息头数据用于说明位图的尺寸等信息。
    typedef struct tagBITMAPINFOHEADER{
    DWORD biSize; // 本结构所占用字节数(14-17字节)
    LONG biWidth; // 位图的宽度,以像素为单位(18-21字节)
    LONG biHeight; // 位图的高度,以像素为单位(22-25字节)
    WORD biPlanes; // 目标设备的级别,必须为1(26-27字节)
    WORD biBitCount;// 每个像素所需的位数,必须是1(双色),(28-29字节)
    // 4(16色),8(256色)或24(真彩色)之一
    DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),(30-33字节)
    // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
    DWORD biSizeImage; // 位图的大小,以字节为单位(34-37字节)
    LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数(38-41字节)
    LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数(42-45字节)
    DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数(46-49字节)
    DWORD biClrImportant;// 位图显示过程中重要的颜色数(50-53字节)
    } BITMAPINFOHEADER;
    4:颜色表
    颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:
    typedef struct tagRGBQUAD {
    BYTE rgbBlue;// 蓝色的亮度(值范围为0-255)
    BYTE rgbGreen; // 绿色的亮度(值范围为0-255)
    BYTE rgbRed; // 红色的亮度(值范围为0-255)
    BYTE rgbReserved;// 保留,必须为0
    } RGBQUAD;
    颜色表中RGBQUAD结构数据的个数有biBitCount来确定:
    当biBitCount=1,4,8时,分别有2,16,256个表项;
    当biBitCount=24时,没有颜色表项。
    位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
    typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER bmiHeader; // 位图信息头
    RGBQUAD bmiColors[1]; // 颜色表
    } BITMAPINFO;
    5:位图数据
    位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:
    当biBitCount=1时,8个像素占1个字节;
    当biBitCount=4时,2个像素占1个字节;
    当biBitCount=8时,1个像素占1个字节;
    当biBitCount=24时,1个像素占3个字节;
    Windows规定一个扫描行所占的字节数必须是
    4的倍数(即以long为单位),不足的以0填充,
    biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;
    具体数据举例:
    如某BMP文件开头:
    4D42 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....
    BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。
    一、图像文件头
    1)1:(这里的数字代表的是"字",即两个字节,下同)图像文件头。0x4D42=’BM’,表示是Windows支持的BMP格式。
    2)2-3:整个文件大小。4690 0000,为00009046h=36934。
    3)4-5:保留,必须设置为0。
    4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。
    二、位图信息头
    5)8-9:位图图信息头长度。
    6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。
    7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。
    8)14:位图的位面数,该值总是1。0100,为0001h=1。
    9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。
    10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。
    11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于(≥位图宽度的最小的4的倍数)×位图高度×每个像素位数。0090 0000为00009000h=80×90×2h=36864。
    12)20-21:用象素/米表示的水平分辨率。A00F 0000为0000 0FA0h=4000。
    13)22-23:用象素/米表示的垂直分辨率。A00F 0000为0000 0FA0h=4000。
    14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。
    15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。
    三、彩色板
    16)28-....(不确定):彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:
    1字节用于蓝色分量
    1字节用于绿色分量
    1字节用于红色分量
    1字节用于填充符(设置为0)
    对于24-位真彩色图像就不使用彩色板,因为位图中的RGB值就代表了每个象素的颜色。
    如,彩色板为00F8 0000 E007 0000 1F00 0000 0000 0000,其中:
    00FB 0000为FB00h=1111100000000000(二进制),是蓝色分量的掩码。
    E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。
    1F00 0000为001Fh=0000000000011111(二进制),是红色分量的掩码。
    0000 0000总设置为0。
    将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储器(同样要反序),就可以转换为24位标准BMP格式了。
    四、图像数据阵列
    17)27(无调色板)-...:每两个字节表示一个像素。阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。
    五、存储算法
    BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。例如,一个800×600的24位几乎占据1.4MB空间。因此它们通常不适合在因特网或者其它低速或者有容量限制的媒介上进行传输。 根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。更为详细的信息请参阅下面关于位图文件的部分。 n位2n种颜色的位图近似字节数可以用下面的公式计算: BMP文件大小约等于 54+4*2的n次方+(w*h*n)/8
    ,其中高度和宽度都是像素数。 需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板将小于。 如果想知道这些值是如何得到的,请参考下面文件格式的部分。 由于存储算法本身决定的因素,根据几个图像参数的不同计算出的大小与实际的文件大小将会有一些细小的差别。

    展开全文
  • //url 模型地址 //onLoad 加载完成后的回调函数,一般在这里操作将模型添加到场景中 //onProgress 加载过程中触发的函数,可以用来展示进度条 //onError 捕捉错误的回调函数 objLoader.load(url,onLoad,onProgress,...

    先来看下最终的效果。
    threeJs导入3D皮卡丘.obj模型

    导入obj模型

    如果仅使用Mesh几何而不加载任何外部资源,则网页应直接在文件系统中运行,只需双击HTML文件打开即可以预览。而由于3D模型是从外部加载进来的,由于浏览器的原始策略安全性限制,从文件系统加载将失败,并出现安全异常。必须要启动本地Web服务器来运行文件。

    下载的模型文件如下:
    threeJs导入3D皮卡丘.obj模型

    默认情况下,three.js 仅包含少数几个加载器(例如JSONLoader),其他加载器应单独添加到应用程序中。例如:导入OBJ格式的模型,除了导入必要的three.js文件外,还需要导入OBJLoader.js文件。three.js中导入外部模型的加载器下载地址:https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders

    可以使用 script 标签导入加载器文件

    <script type="text/javascript" src="../js/loaders/OBJLoader.js"></script>
    

    也可以使用 ES6 的 import 导入所需文件

    import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader';
    

    导入加载器后,就可以将模型添加到场景中了。语法在不同的加载程序中有所不同。OBJLoader的使用方法如下:

    var objLoader = new THREE.OBJLoader();
    //url 模型地址
    //onLoad 加载完成后的回调函数,一般在这里操作将模型添加到场景中
    //onProgress 加载过程中触发的函数,可以用来展示进度条
    //onError 捕捉错误的回调函数
    objLoader.load(url,onLoad,onProgress,onError);
    
    function onLoad(object) {
        //......
        scene.add(object);	//将模型添加到场景中
    });
    
    function onProgress( xhr ) {
    	if ( xhr.lengthComputable ) {
    		var percentComplete = xhr.loaded / xhr.total * 100;
    		console.log( 'model ' + Math.round( percentComplete, 2 ) + '% downloaded' );
    	}
    }
    
    function onError() {}
    

    设置模型的缩放比例:

    object.scale.set(1, 1, 1);
    

    设置模型的坐标:

    object.position.set(0, 0, 0);
    

    添加模型周围的立方体边线:

    var box = new THREE.Box3().setFromObject(object);
    var box3Helper = new THREE.Box3Helper(box);
    scene.add(box3Helper);
    

    添加辅助工具x,y,z三维坐标轴:

    scene.add(new THREE.AxesHelper(20));
    

    添加模型皮肤:

    object.traverse(function(child) {
        if (child instanceof THREE.Mesh) {
            //设置模型皮肤
            child.material.map = THREE.ImageUtils.loadTexture( 'pikaqiu/p.jpg');
        }
    });
    

    PI属性就是π,还表示了弧度π = 180°,Math.PI = 3.14 = 180°

    Math.PI = 3.14 = 180°
    

    案例的完整代码如下:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>皮卡丘</title>
        </head>
        <body>
        </body>
        <script type="text/javascript" src="../js/three.js"></script>
        <script type="text/javascript" src="../js/loaders/OBJLoader.js"></script>
        <script type="text/javascript" src="../js/controls/OrbitControls.js"></script>
        <script>
            //场景
            var scene = new THREE.Scene();
    
            //相机
            var camera = new THREE.PerspectiveCamera(15, window.innerWidth / window.innerHeight, 0.1, 1000);
            //设置相机坐标
            camera.position.set(50, 30, 100);
    
            //渲染器
            var renderer = new THREE.WebGLRenderer();
            //设置渲染器的颜色和大小
            renderer.setClearColor(0x404040);
            renderer.setSize(window.innerWidth, window.innerHeight);
            //将renderer(渲染器)的dom元素(renderer.domElement)添加到我们的HTML文档中。
            //这就是渲染器用来显示场景给我们看的<canvas>元素
            document.body.appendChild(renderer.domElement);
     
            //鼠标控制旋转
            var controls = new THREE.OrbitControls(camera, renderer.domElement);
            //设置是否可以缩放,默认值为true
            // controls.enableZoom = false;
            //设置鼠标交互,设置为false之后,不能移动位置,不能旋转物体,默认为true
            // controls.enableRotate = false;
     
            //设置光源
            var light = new THREE.DirectionalLight(0xffffff, 0.5);
            light.position.setScalar(100);
            scene.add(light);
            scene.add(new THREE.AmbientLight(0xffffff, 0.5));
    
            //添加灰色网格线
            scene.add(new THREE.GridHelper(20, 20));
    
            //导入obj模型
            var objLoader = new THREE.OBJLoader();
            objLoader.load('/02-objectLoader/pikaqiu/pikaqiu.obj', function (object) {
    
                //设置模型缩放比例
                object.scale.set(1, 1, 1);
                //设置模型的坐标
                object.position.set(0, 0, 0);
    
                //PI属性就是π,还表示了弧度π = 180°,Math.PI = 3.14 = 180°
                //将模型z轴旋转90度,三种写法都可以
                // object.rotation.z = -Math.PI * 0.5;
                // object.rotateZ(-Math.PI * 0.5);
                // object.rotation.set(0,0,-Math.PI * 0.5);
    
                //绘制模型周围的立方体连线
                // var box = new THREE.Box3().setFromObject(object);
                // var box3Helper = new THREE.Box3Helper(box);
                // scene.add(box3Helper);
    
                //辅助工具,x,y,z三维坐标轴
                // scene.add(new THREE.AxesHelper(20));
    
                object.traverse(function(child) {
                    if (child instanceof THREE.Mesh) {
                        //设置模型皮肤
                        child.material.map = THREE.ImageUtils.loadTexture( '/02-objectLoader/pikaqiu/p.jpg');
                    }
                });
                //将模型添加到场景中
                scene.add(object);
            });
    
            function render() {
                //动画循环渲染
                requestAnimationFrame(render);
                //渲染到页面上
                renderer.render(scene, camera);
            }
            render();
        </script>
    </html>
    

    参考资料:
    https://threejs.org/docs/index.html

    展开全文
  • Matlab导出高DPI图像——生成高分辨率.eps .tiff .jpg

    万次阅读 多人点赞 2018-10-11 16:15:08
    对于线图来说一般需要 600dpi : 最后点击导出,保存为需要的格式即可(包括 eps/tiff/jpeg 等) 2.其他方法 有时候对于导出分辨率不满足要求,还可以利用matlab 的 print 函数来进行导出。 %...

    Matlab高分辨率DPI导出eps、tiff论文用图

    论文中常常要求高dpi的图像导出,matlab fig中的export设置可以帮助我们实现这样的目标。

    1.使用file>export setup

    matlab 绘图完成后我们通常会的得到下面这样的figure窗口:
    在这里插入图片描述
    随后点击文件》导出设置》就能打开导出设置窗口
    在这里插入图片描述

    我们需要设置:

    • 大小的单位(有时候需要自行设置宽和高),由于dpi是以inch为单位,这里将单位设置为英寸

    • 渲染的分辨率,设置为要求的大小。对于线图来说一般需要600dpi
      在这里插入图片描述

    • 最后点击导出,保存为需要的格式即可(包括eps/tiff/jpeg等)
      在这里插入图片描述

    2.其他方法

    有时候对于导出分辨率不满足要求,还可以利用matlab 的 print 函数来进行导出。

    %在做好图后,fig显示当前需要保存的图像
    
    img =gcf;  %获取当前画图的句柄
    print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像
    
    %第一个参数为fig的句柄,第二个-r后加对应的分辨率dpi,第二个为-d加对应的图像格式
    %最后加上文件路径及名称字符串。
    %https://edoras.sdsu.edu/doc/matlab/techdoc/ref/print.html
    %http://cens.ioc.ee/local/man/matlab/techdoc/ref/print.html
    %http://ww2.mathworks.cn/help/matlab/ref/print.html
    

    此外对于图像,还可以使用imwrite

    img = getimage(gcf);                                 %获取当前坐标系图像
    imwrite(img,'img.tiff', 'tiff', 'Resolution', 600)   %只有tiff可以使用Resolution参数, png可以使用X/YResolution, 参考help imwrite
    

    ref:1,2,3,4,5,5-ways, online,ppt, epspptfaq, exportImg, indenze

    展开全文
  • [csharp] view ...string path1 = "E:\\1.jpg";  string path2 = "E:\\1.bmp";  Bitmap bmp1 = new Bitmap(path1);  bmp1.Save(path2,ImageFormat.Bmp);  path2保存的是24位的bmp文件,但
  • 如何将.jpg 转成.eps

    千次阅读 2014-01-11 09:30:41
    方法一: windows下.jpg转.eps for latex的另一便捷方式:在装了latex的机子上,可以从MiKTex的目录下找到bmeps的应用文件。... 在DOS下,进入.jpg图片所在目录, 用语句bmeps 1.jpg 1.eps可以成功在
  • 如何将JPG图片转换成WEBP格式

    千次阅读 2020-10-22 08:39:58
    首先最简单粗暴的方法当然是直接修改后缀,由于这几种图片格式之间差别并不大,所以一般都可以正常使用。直接在图片处右击并选择“重命名”,然后将.jpg修改为.webp即可,反之也是一样的操作。 方法2:工具转换 ...
  • C#版本HEIC转JPG

    2017-11-09 19:33:17
    需要vc2015的支持,一般在开发环境是可以正常运行的,需要修改资源文件运行
  • 无法打开jpg图片的解决方法

    千次阅读 2021-07-05 00:58:40
    通过以上的设置,我们在看图片的图标一般就会更换成了图片形式的图标了。 END 看了“无法打开jpg图片怎么办”的人还看了 1.电脑图片打不开怎么办 2.图片损坏打不开怎么办 3.win7系统的图片无法打开怎么办 4.笔记本...
  • Latex jpg转eps

    2020-04-09 20:48:55
    在DOS下,进入.jpg图片所在目录, 用语句bmeps 1.jpg 1.eps可以成功在同目录中输出1.eps文件。除此之外,在linux下转非常轻松。最崩溃的是,无论你怎么转,分辩率始终是个问题,就是到pdf文件以后,原先的.jpg不会...
  • 常见图片格式:PNG,JPG/JPEG,BMP

    千次阅读 2018-06-14 10:04:35
    派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。 8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是: 十进制数:  137 80 78 71 13 10 26 10  ...
  • jpg、jpeg、png... 的区别

    千次阅读 2018-10-17 10:59:00
    jpg格式相似,经常在拷相片的时候看到得,但我们制作图片的时候一般是保存jpg,该种图片格式是文件相对jpg大,因为里面存储了很多相机里的拍摄参数,像色相、饱和度、对比度等  可支持有陨压缩  不支持透明 ...
  • Convert .hdf5 to .jpg with Matlab

    千次阅读 2016-08-31 13:31:54
    Convert .hdf5 to .jpg with Matlab 背景 方法 坑 小结 背景最近用Caffe做风格化的东西,Train阶段完成了需要做一个Test。和其他的深度学习的Test不同的是,这里需要输出的是变换后的图片,而不是数据上的Loss的大小...
  • 常用图片jpg png jpeg gif等格式介绍

    千次阅读 2019-12-25 15:55:23
    缺点 不支持动画应用效果,一般体积比同尺寸的90%压缩率的jpg要大很多(通常是5倍以上),但人眼很难识别其中的区别 4、GIF 可译为图形交换格式,用于以超文本标志语言(Hypertext Markup Language)方式显示索引彩色...
  • 如何将jpg等格式的图片转化为yuv

    千次阅读 2019-08-24 11:56:02
    需要注意的是: -pix_fmt yuv420p需要添加上,如果不添加的话,往往转码结果为yuv444格式,不是一般读者所需要的。另外输入图片需要放在bin文件夹下面。 附:推荐一个yuv播放器: http://www.yuvplayer.com/ 参考以下...
  • 一、JPEG图片格式详解 JPEG图片格式组成部分:SOI(文件头)+APP0(图像识别信息)+ DQT(定义量化表)+ SOF0(图像基本信息)+ DHT(定义Huffman表) + ...表1:段的一般结构 -----------------------------------...
  • 各种图片编码格式详解(bmp,jpg,png)

    万次阅读 多人点赞 2019-04-11 19:44:19
    做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章...常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。 图像基本数据结构  要讲图片格式还先得从图像的基本数据结构说起。在计算机...
  • CTF---图片隐写相关

    万次阅读 2017-05-08 21:30:47
    图种就是图片后面再放点信息进去,压缩包、txt文档、或者再来一张图片,要隐藏的信息完全没有限制,cmd举例如下: :: /b表示二进制方式 copy a.jpg/b+b.zip/b c.jpg copy a.jpg/b+b.txt/b c.jpg copy a.jpg/b+b.jpg/...
  • Latex 插入jpg,eps图片

    千次阅读 2019-06-03 16:01:41
    Latex一般是可以直接插入某个JPG、PNG等图片: \begin{figure}[h] \centering \includegraphics[width=\linewidth]{pictures/Snipaste_2019-05-25_01-55-42.png} \caption{1907 Franklin Model D...
  • atmdesigns.github.io

    2021-06-03 10:15:40
    一般的 调整比萨图像的大小(使其变小) 将pizza.jpg、image1.jpg、image3.jpg 的质量降低到 30% 以在不损失质量的情况下优化图像 在 index.html 在 main.js 中 将 queryselector 更改为 getElementsByClassName ...
  • 急!什么叫“jpg格式电子照片”?

    千次阅读 2021-07-26 01:07:27
    (u盘,移动硬盘等)全部2018-03-12 22:14:032018-03-12 22:14:03用数码相机(没有的话去照像馆)给自己照一张,把像片转到电脑里,点击像片那个文件,(文件名一般是XXXX.***,点前面是文件名,后面是扩展名,扩展名一般...
  • JPG 的图片格式详解

    万次阅读 2018-06-08 14:04:52
    JPG jpg全名是JPEG 。JPEG 图片以 24 位颜色存储单个光栅图像。JPEG 是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的。渐近式 JPEG 文件支持交错。 jpg功能  可以提高或降低 JPEG文件压缩的...
  • Pillow EPS 矢量图转 JPG

    千次阅读 2021-12-15 09:09:13
    之前遇到一个需求 批量eps矢量图转成 4000*4000 以上的jpg图片, 然后我就开始研究了 思路: 总的来说大致方案有两个: 一个是傻瓜式教程: 直接用Adobe Illustrator打开eps, 然后ctrl + alt + shift + s 存储为...
  • yuv 和jpg互相转

    千次阅读 2019-12-01 21:38:57
    目的很明确就是批量把jpg图片转为YUV格式。 ------------------------------------------------------------------ 先看一下win下具体如何操作的: 1. 下载ffmpeg,转码图片和视频的利器啊!官方免费下载地址:...
  • 数据预处理

    千次阅读 2021-11-19 11:13:45
    1. 获得一批数据集,先把数据集转成能够处理的...ImageFolder:Supported extensions are: .jpg, .jpeg, .png, .ppm, .bmp, .pgm, .tif, .tiff, .webp** 3. cv2 https://www.cnblogs.com/shizhengwen/p/8719062.htm
  • 2018-12-26怎么把图片弄成JPG格式?图片格式转换方法: 1。鼠标针移动到图片,按鼠标右键,选择“预览”在窗口中的下方,从右数起第三“复制到”用鼠标点击,保存类型为jpg,ok!...在保存类型那里选择 jpg...
  • jpg 格式举例详解——非常详细

    万次阅读 多人点赞 2017-11-24 22:50:07
    JPEG文件数据结构以及将位图保存为JPG的代码 一、简述  JPEG是一个压缩标准,又可分为标准JPEG、渐进式JPEG及JPEG2000三种:  ①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高级别的...
  • jpg、jpeg、png、gif、bmp、tiff、ai、cdr、eps 对于做设计这一行的人来说,这几个图片格式是最常用的,也是最常见的,几乎每一天都要与他们打交道。刚刚入门的新人通常不知道在什么地方如何使用他们或者说如何更...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,881
精华内容 83,552
关键字:

一般.jpg