Android--智能图像识别(基于百度智能云)

效果图

在这里插入图片描述

引言

效果图是在模拟器上运行的,调用相机的时候是调用的电脑上的相机,所以我选择的是实时截取屏幕,随便选了一个图片,然后就是关于这个智能识别,毕竟是调用的百度的API,所以…注意保密性…百度后台应该是能看到拍的图片的。结果返回的是一个Json字符串我就没有去处理它了,然后朋友帮我处理了一下…
在这里插入图片描述
处理后的效果
在这里插入图片描述

步骤

  1. 首先是调用相机
  2. 然后将得到的图片显示在Activity上
  3. 再然后就是调用百度智能云的API处理图片,当然第三步和第二步是同时处理的
  4. 最后就是想结果显示到Activity上

调用相机

  • 先在AndroidManifest.xml里面添加一些配置信息
    添加权限
	<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

在< application></ application>标签里面添加相机内容提供者

<!-- 为调用相机拍照设置内容提供者 -->
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.mydemo.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true"
            tools:ignore="WrongManifestParent">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

并在< activity></ activity>里面添加
在这里插入图片描述

  • 然后就是通过按钮点击调用相机,并且将图片传到相应Activity显示
public class capture extends AppCompatActivity {
   

    public static final int TAKE_PHOTO = 1;//声明一个请求码,用于识别返回的结果
    private Uri imageUri;
    private final String filePath = getExternalFilesDir(null) + File.separator + "output_image.jpg";//根目录下
    //Environment.getExternalStorageDirectory();这个方法已经废弃,上一行代码的替换没测试过是否成功
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_capture);

        //点击事件进行拍照
        Button takephoto = findViewById(R.id.take_photo);
        textView = findViewById(R.id.textView);
        takephoto.setOnClickListener(new View.OnClickListener() {
   
            public void onClick(View view) {
   
                //动态请求相机权限
                requestPermission();  //在其中若用户给予权限则请求相机拍照
            }
        });
        //设置默认图片
        setDefualtImage();
    }

    //动态请求权限
    private void requestPermission() {
   

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
   
            //请求权限
            ActivityCompat.requestPermissions(this, new String[]{
   Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
        } else {
   
            //调用
            requestCamera();
        }
    }


    @Override
    public void onRequestPermissionsResult(
  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、使用和修改源代码。 2. 多样化的硬件设备支持:Android 支持多种硬件设备和屏幕尺寸,可以运行于手机、平板电脑、电视、手表等多种设备上。 3. 灵活的用户界面:Android 提供了丰富的用户界面控件和布局方式,可以实现漂亮、个性化的用户界面。 4. 响应式设计:Android 应用程序可以根据设备类型、屏幕尺寸等因素调整布局和显示方式,以适应不同的设备和用户需求。 5. 多媒体支持:Android 支持常见的音频、视频、图像等多媒体格式,可以实现各种多媒体应用。 6. 数据存储:Android 提供了多种数据存储方式,包括 SQLite 数据库、文件存储、SharedPreferences 等。 7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于开源学习和技术交流。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。 3. 不可商用,一切后果由使用者承担。
要调用百度图像审核接口,首先需要注册百度AI开发者账号,然后创建一个图像审核应用并获取对应的API Key和Secret Key。 接下来,可以使用Java SDK中提供的Baidu Aip ImageCensor客户端来实现调用百度图像审核接口的功能。具体的代码如下: ```java import com.baidu.aip.imagecensor.AipImageCensor; import org.json.JSONObject; public class BaiduImageCensor { // 设置APPID/AK/SK public static final String APP_ID = "your app id"; public static final String API_KEY = "your api key"; public static final String SECRET_KEY = "your secret key"; public static void main(String[] args) { // 初始化一个AipImageCensor AipImageCensor client = new AipImageCensor(APP_ID, API_KEY, SECRET_KEY); // 可选:设置网络连接参数 client.setConnectionTimeoutInMillis(2000); client.setSocketTimeoutInMillis(60000); // 调用图像审核接口 String path = "your image path"; JSONObject response = client.imageCensorUserDefined(path, null); // 处理响应结果 System.out.println(response.toString()); } } ``` 在调用imageCensorUserDefined方法时,第二个参数可选,用于设置审核类型。如果不指定,接口默认开启“普通”审核模式。可以设置为“色情”、“暴恐”、“政治”、“恶心”、“水印”、“二维码”、“条形码”这些审核类型中的一个或多个。例如: ```java // 设置审核类型为“色情”、“暴恐”和“政治” HashMap<String, String> options = new HashMap<>(); options.put("type", "porn,terror,politics"); JSONObject response = client.imageCensorUserDefined(path, options); ``` 需要注意的是,调用百度图像审核接口需要消耗计算资源,因此建议对接口进行缓存,避免频繁调用导致API Key被封禁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值