19_Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写

简介: 1 加载图片到内存(1).数码相机照片特别是大于3m以上的,内存吃不消,会报OutOfMemoryError,若是想只显示原图片的1/8,可以通过BitmapFactory.Options来实现,具体代码如下:

1 加载图片到内存

1.数码相机照片特别是大于3m以上的,内存吃不消,会报OutOfMemoryError,若是想只显示原图片的1/8,可以通过BitmapFactory.Options来实现,具体代码如下:

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();

bmpFactoryOptions.inSampleSize = 8;

Bitmap bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);

imv.setImageBitmap(bmp);

如果图片太大,会出现的以下的问题:

2 根据当前屏幕分辨率的大小,加载图片

Display currentDisplay = getWindowManager().getDefaultDisplay();

int dw = currentDisplay.getWidth();

int dh = currentDisplay.getHeight();

 

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();

bmpFactoryOptions.inJustDecodeBounds = true;

Bitmap bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);

//通过下面的代码计算缩放比,那个方向的缩放比大,就按照这把方向的缩放比来缩放。

int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)dh);

int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)dw);

Log.v("HEIGHTRATIO",""+heightRatio);

Log.v("WIDTHRATIO",""+widthRatio);

 

//判断是否要进行缩放

if (heightRatio > 1 && widthRatio > 1)

{

if (heightRatio > widthRatio)

{

//高度变化大,按高度缩放

bmpFactoryOptions.inSampleSize = heightRatio;

}

else

{

// 宽度变化大,按宽度缩放

bmpFactoryOptions.inSampleSize = widthRatio;

}

}

bmpFactoryOptions.inJustDecodeBounds = false;

bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);

3 获取Exif图片信息

//从文件获取exif信息

ExifInterface ei = new ExifInterface(imageFilePath);

String imageDescription = ei.getAttribute("ImageDescription");

if (imageDescription != null)

{

Log.v("EXIF", imageDescription);

}

//exif信息写到文件:

ExifInterface ei = new ExifInterface(imageFilePath);

ei.setAttribute("ImageDescription","Something New");

4 gallery获取一个图片

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType(“image/*”);

intent.getData() 获取imageuri

Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().

openInputStream(imageFileUri), null, bmpFactoryOptions);

5 创建bitmap拷贝

Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().

openInputStream(imageFileUri), null, bmpFactoryOptions);

Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),

bmp.getConfig());

Canvas canvas = new Canvas(alteredBitmap);

Paint paint = new Paint();

canvas.drawBitmap(bmp, 0, 0, paint);

6 图形缩放

Matrix matrix = new Matrix();

matrix.setValues(new float[] {

         1, 0, 0,

         0, 1, 0,

         0, 0, 1

});

x = 1x + 0y + 0z

y = 0x + 1y + 0z

z = 0x + 0y + 1z

通过canvas.drawBitmap(bmp, matrix, paint);创建bitmap

1.水平缩放0.5

2.垂直拉扯2

matrix.setScale(1.5f,1);//水平点放大到1.5f,垂直1

7 图形旋转

Matrix matrix = new Matrix();

matrix.setRotate(15);

canvas.drawBitmap(bmp, matrix, paint);

消除锯齿

paint.setAntiAlias(true);  

指定圆心的旋转

matrix.setRotate(15,bmp.getWidth()/2,bmp.getHeight()/2);

Matrix matrix = new Matrix();

matrix.setRotate(15,bmp.getWidth()/2,bmp.getHeight()/2);

alteredBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),

matrix, false);

alteredImageView.setImageBitmap(alteredBitmap);

8 图像平移:

setTranslate(1.5f,-10);

9 镜子效果:

matrix.setScale(-1, 1);

matrix.postTranslate(bmp.getWidth(),0);

10 倒影效果:

matrix.setScale(1, -1);

matrix.postTranslate(0, bmp.getHeight());

11 图像颜色处理:

颜色矩阵  ColorMatrix cm = new ColorMatrix();

paint.setColorFilter(new ColorMatrixColorFilter(cm));

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

New Red Value = 1*128 + 0*128 + 0*128 + 0*0 + 0

New Blue Value = 0*128 + 1*128 + 0*128 + 0*0 + 0

New Green Value = 0*128 + 0*128 + 1*128 + 0*0 + 0

New Alpha Value = 0*128 + 0*128 + 0*128 + 1*0 + 0

ColorMatrix cm = new ColorMatrix();

cm.set(new float[] {

2, 0, 0, 0, 0,

0, 1, 0, 0, 0,

0, 0, 1, 0, 0,

0, 0, 0, 1, 0

});

paint.setColorFilter(new ColorMatrixColorFilter(cm));

12 变换图像的亮度

ColorMatrix cm = new ColorMatrix();

float contrast = 2;

cm.set(new float[] {

contrast, 0, 0, 0, 0,

0, contrast, 0, 0, 0,

0, 0, contrast, 0, 0,

0, 0, 0, 1, 0 });

paint.setColorFilter(new ColorMatrixColorFilter(cm));

12 变换图像的亮度

ColorMatrix cm = new ColorMatrix();

float contrast = 2;

cm.set(new float[] {

contrast, 0, 0, 0, 0,

0, contrast, 0, 0, 0,

0, 0, contrast, 0, 0,

0, 0, 0, 1, 0 });

paint.setColorFilter(new ColorMatrixColorFilter(cm));

13 更改图片的饱和度:

ColorMatrix cm = new ColorMatrix();

cm.setSaturation(.5f);

paint.setColorFilter(new ColorMatrixColorFilter(cm));

14 图像合成:

Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.getWidth(),bmp1.getHeight(), bmp1.getConfig());

canvas = new Canvas(drawingBitmap);

paint = new Paint();

canvas.drawBitmap(bmp1, 0, 0, paint);

paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.MULTIPLY));

canvas.drawBitmap(bmp2, 0, 0, paint);

15 按指定path上绘制文字

Paint paint = new Paint();

paint.setColor(Color.GREEN);

paint.setTextSize(20);

paint.setTypeface(Typeface.DEFAULT);

Path p = new Path();

p.moveTo(20, 20);

p.lineTo(100, 150);

p.lineTo(200, 220);

canvas.drawTextOnPath("Hello this is text on a path", p, 0, 0, paint);

16 人脸识别

FaceDetector detector = new FaceDetector(faceBitmap.getWidth(),

faceBitmap.getHeight(), 3); // 创建识别器

mNumFaces = detector.findFaces(faceBitmap, mFaces);   

// 识别

if (mNumFaces > 0) {

     for (int i = 0; i < mNumFaces; i++) {

         handleFace(mFaces[i]);     

         //调用函数对人脸画面进行处理

     }

}

关于人脸识别部分(网站地址是):

http://www.faceplusplus.com/

 

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

1  场景:一张图片很大,放到手机上时需要对图片资源进行压缩以及缩放,编写如下界面的案例:

2 操作:当点击加载图片到内存时,图片从自己的手机sd卡中取到并显示。

3 ADT开发时,手机连接上电脑后,在Android开发工具中的”FileExplorer”中的文件位置如下:

4 下面开始编写代码,项目结构如下:

5 编写activity_main.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".MainActivity" >

 

    <Button

        android:onClick="click"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="加载图片到内存" />

 

    <ImageView

        android:id="@+id/iv"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent" />

 

</LinearLayout>

6 编写MainActivity,代码如下:

package com.itheima.loadimg;

 

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.BitmapFactory.Options;

import android.os.Bundle;

import android.view.View;

import android.view.WindowManager;

import android.widget.ImageView;

 

public class MainActivity extends Activity {

    private ImageView iv;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

       iv = (ImageView) findViewById(R.id.iv);

    }

 

    public void click(View view) {

       // 相当消耗内存资源 根据图片的分辨率而定

       // Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/photo.jpg");

       // iv.setImageBitmap(bitmap);

 

       // 1.得到屏幕的宽高信息

       WindowManager wm = getWindowManager();

       int screenWidth = wm.getDefaultDisplay().getWidth();

       int screenHeight = wm.getDefaultDisplay().getHeight();

       System.out.println("屏幕宽高:" + screenWidth + "-" + screenHeight);

 

       // 2.得到图片的宽高。

       BitmapFactory.Options opts = new Options();// 解析位图的附加条件

       opts.inJustDecodeBounds = true;// 不去解析真实的位图,只是获取这个位图的头文件信息

       Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard2/photo.jpg", opts);

       int bitmapWidth = opts.outWidth;

       int bitmapHeight = opts.outHeight;

       System.out.println("图片宽高: " + bitmapWidth + "-" + bitmapHeight);

 

       // 3.计算缩放比例

       int dx = bitmapWidth / screenWidth;

       int dy = bitmapHeight / screenHeight;

       int scale = 1;

       if (dx > dy && dy > 1) {

           System.out.println("按照水平方法缩放,缩放比例:" + dx);

           scale = dx;

       }

 

       if (dy > dx && dx > 1) {

           System.out.println("按照垂直方法缩放,缩放比例:" + dy);

           scale = dy;

       }

       // 4.缩放加载图片到内存。

       opts.inSampleSize = scale;

       opts.inJustDecodeBounds = false;// 真正的去解析这个位图。

       bitmap = BitmapFactory.decodeFile("/mnt/sdcard2/photo.jpg", opts);

       iv.setImageBitmap(bitmap);

    }

}

7 编写AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.itheima.loadimg"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="19" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.itheima.loadimg.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

 

</manifest>

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

1 图像的拷贝,翻转倒置。

要做如下效果(开始的效果图):

点击拷贝一个位图之后的效果:

2 编写代码,代码结构如下:

3 编写布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".MainActivity" >

   

    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:onClick="click"

        android:text="拷贝一个位图" />

 

    <ImageView

        android:id="@+id/iv1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

 

    <ImageView

        android:id="@+id/iv2"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

   

</LinearLayout>

4 编写MainActivity,内容如下:

package com.itheima.copybitmap;

 

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;

 

public class MainActivity extends Activity {

         private ImageView iv1,iv2;

         private Bitmap alterBitmap;

         private Bitmap srcBmp;

        

         @Override

         protected void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.activity_main);

        

                   iv1 = (ImageView) findViewById(R.id.iv1);

                   iv2 = (ImageView) findViewById(R.id.iv2);

                   //给第一个imageview默认设置一个位图

                   srcBmp = BitmapFactory.decodeResource(getResources(), R.drawable.tomcat);

                   iv1.setImageBitmap(srcBmp);

                   //创建原图的一个副本。 可修改  创建的是一个空白的图形。

                   alterBitmap = Bitmap.createBitmap(srcBmp.getWidth(), srcBmp.getHeight(),srcBmp.getConfig());

         }

        

         /**

          * 创建原图  bm的一个拷贝。副本

          * @param view

          */

         public void click(View view) {

                   //1.准备一个画板   在上面放上准备好的  空白的位图

                   Canvas canvas = new Canvas(alterBitmap);

                   //2.准备一个画笔

                   Paint paint = new Paint();

                   paint.setColor(Color.BLACK);

                   //3.画画

                   Matrix m = new Matrix();

                   m.setScale(1.0f, -1.0f);

                   m.postTranslate(0, srcBmp.getHeight());

                   canvas.drawBitmap(srcBmp, m, paint);

                   iv2.setImageBitmap(alterBitmap); //把原图的副本设置到界面中

         }

}

 

  1. 拷贝放大图像的方式,只需要将上面的Click方法改成如下的方式:

/**

     * 创建原图bm的拷贝。副本

     * @param view

     */

    public void click(View view) {

       //1.准备一个画板   在上面放上准备好的   空白的位图

       Canvas canvas = new Canvas(alterBitmap);

       //2.准备一个画笔

       Paint paint = new Paint();

       paint.setColor(Color.BLACK);

       //3.画画

       Matrix m = new Matrix();

       m.setScale(2.0f, 2.0f);

       canvas.drawBitmap(srcBmp, m, paint);

       //把原图的副本设置到界面上。

       iv2.setImageBitmap(alterBitmap);

    }

运行效果图如下:

如果旋转,只需要将Scale处的代码换成:

m.setRotate(180, srcBmp.getWidth()/2,srcBmp.getHeight()/2);

如果想变换颜色,需要将上面的代码换成:

/**

          * 创建原图 bm的一个拷贝。副本

          * @param view

          */

         public void click(View view){

                   //1.准备一个画板  在上面放上准备好的 空白的位图

                   Canvas canvas = new Canvas(alterBitmap);

                   //2.准备一个画笔

                   Paint paint = new Paint();

                   paint.setColor(Color.BLACK);

                   //3.画画

                   Matrix m = new Matrix();

                  

                   ColorMatrix cm = new ColorMatrix();

                   cm.set(new float[] {

                   0.5f, 0, 0, 0, 0,

                   0, 0.8f, 0, 0, 0,

                   0, 0, 0.6f, 0, 0,

                   0, 0, 0, 1, 0

                   });

                   paint.setColorFilter(new ColorMatrixColorFilter(cm));

                   canvas.drawBitmap(srcBmp, m, paint);

                   iv2.setImageBitmap(alterBitmap);//把原图的副本设置到界面上。

         }

 

业务场景:

1)、手指在一张美女图片上移动时,移动部分的图片会变成成透明,然后显示底部的另外一张图片

2)、当手指离开的时候播放音乐

应用效果图:

1 编写应用,代码结构如下:

2、编写布局文件activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >

 

    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_centerVertical="true"

        android:src="@drawable/after" />

 

    <ImageView

        android:id="@+id/iv"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_centerVertical="true"/>

 

</RelativeLayout>

3、编写MainActivity

package com.itheima.play;

 

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.ImageView;

 

public class MainActivity extends Activity {

    private ImageView iv;

    // 可以修改的位图

    private Bitmap alertBitmap;

    private Canvas canvas;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

       iv = (ImageView) findViewById(R.id.iv);

       Bitmap bitmap = BitmapFactory.decodeResource(getResources(),

              R.drawable.pre);

       // 创建一个空白的原图的拷贝

       alertBitmap = Bitmap.createBitmap(bitmap.getWidth(),

              bitmap.getHeight(), bitmap.getConfig());

       canvas = new Canvas(alertBitmap);

       Paint paint = new Paint();

       paint.setColor(Color.BLACK);

       canvas.drawBitmap(bitmap, new Matrix(), paint);

       iv.setImageBitmap(alertBitmap);

       iv.setOnTouchListener(new OnTouchListener() {

           @Override

           public boolean onTouch(View v, MotionEvent event) {

              switch (event.getAction()) {

              case MotionEvent.ACTION_DOWN:// 手指按下屏幕

                  System.out.println("action down");

                  break;

              case MotionEvent.ACTION_MOVE:// 手指在屏幕上移动

                  int x = (int) event.getX();

                  int y = (int) event.getY();

                  System.out.println("设置("+x+","+y+")透明颜色");

                  for(int i=-4;i<5;i++){

                     for(int j=-4;j<5;j++){

                         try{

                         alertBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);

                         } catch (Exception e) {

                            e.printStackTrace();

                         }

                     }

                  }

                  iv.setImageBitmap(alertBitmap);

                  break;

              case MotionEvent.ACTION_UP:// 手指离开屏幕

                  MediaPlayer.create(getApplicationContext(), R.raw.higirl).start();

                  break;

              }

              return true;//可以重复循环的处理事件

           }

       });

    }

}

4  Android的清单文件如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.itheima.play"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="19" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.itheima.play.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

 

</manifest>

 


目录
相关文章
|
21天前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
40 20
Android经典面试题之图片Bitmap怎么做优化
|
2月前
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
|
2月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
143 4
|
3月前
|
Java Android开发 Spring
Android Spingboot 实现SSE通信案例
【7月更文挑战第14天】以下是使用Android和Spring Boot实现SSE(Server-Sent Events)通信的案例摘要: 在`MainActivity`中: - 初始化界面元素并设置按钮点击事件。 - `startSseRequest`方法创建`WebClient`对象,设置请求头,发送请求,并处理响应和错误。 请确保将`your-server-url`替换为实际的服务器地址。
76 14
|
2月前
|
XML 前端开发 Android开发
Android经典实战之Kotlin中实现圆角图片和圆形图片
本文介绍两种实现圆角图像视图的方法。第一种是通过自定义Kotlin `AppCompatImageView`,重写`onDraw`方法使用`Canvas`和`Path`进行圆角剪裁。第二种利用Android Material库中的`ShapeableImageView`,简单配置即可实现圆角效果。两种方法均易于实现且提供动态调整圆角半径的功能。
38 0
|
4月前
|
JSON Java API
【Android】使用 Retrofit2 发送异步网络请求的简单案例
**摘要:** Retrofit是Android和Java的HTTP客户端库,简化了RESTful API交互。它通过Java接口定义HTTP请求,并提供注解管理参数、HTTP方法等。要使用Retrofit,首先在AndroidManifest.xml中添加`INTERNET`权限,然后在`build.gradle`中引入Retrofit和Gson依赖。创建服务器响应数据类和描述接口的接口,如`Result`和`Api`。通过Retrofit.Builder配置基础URL并构建实例,之后调用接口方法创建Call对象并发送异步请求。
147 1
|
3月前
|
监控 Java 图形学
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
161 0
|
4月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之活体检测通过后,从返回结果中选择哪张图片进行人脸核身
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
2月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
|
3月前
|
存储 分布式计算 Hadoop
HadoopCPU、内存、存储限制
【7月更文挑战第13天】
215 14
下一篇
无影云桌面