图像识别小工具,减轻图片分类工作量

1,182 阅读2分钟

一起用代码吸猫!本文正在参与【喵星人征文活动】

前言

摄影师朋友每天都要拍很多照片,打开文件还需要对所有的图片进行分门别类一下,这个工作量还是蛮大的。先给他搞个识别小工具,将部分图片自动识别分类。而且旷视现在支持的场景还是很多的:人物,小孩,夜景,街道,雪景,猫,狗等等完全可以支持很多场景使用。首先使用eletron开发个简单的桌面工具。我一直都是后端开发,所以只能做个粗糙的界面。

主要功能:

1、定位到某个文件夹

2、识别文件夹内的图片文件,识别的过程主要使用旷世人工智能接口,其中的场景与物体识别API的接口,详见旷视人工智能开放平台

具体实现

1、实现一个桌面平台

一个桌面小工具

const { app, BrowserWindow } = require("electron");
require('./src/pages/menu');
​
​
// 创建浏览器窗体
function createWin() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      backgroundThrottling: false, //设置应用在后台正常运行
      nodeIntegration: true, //设置能在页面使用nodejs的API
      contextIsolation: false, //关闭警告信息
    },
  });
​
  // 加载页面
  win.loadFile("./src/index.html");
​
  // 打开开发者工具
  // win.webContents.openDevTools();
}
​
//
app.whenReady().then(createWin);
​
// 所有页面都关闭时将关闭窗体
app.on("window-all-closed", () => {
  // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform !== "darwin") {
    app.quit();
  }
});
​
//
app.on("activate", () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWin();
  }
});
​

2、实现场景与物体的识别

步骤:

1、首先需要申请到相应的key 和 secret,注册旷视账号并创建一个应用将获取到一个appKey 和 appSecret

2、调用场景与物体识别API:请求地址:api-cn.faceplusplus.com/imagepp/bet…

是否必选参数名类型参数说明
必选api_keyString调用此API的API Key
必选api_secretString调用此API的API Secret
必选(三选一)image_urlString图片的URL
async function scanPic(filePath) {
  const options ={
        uri: url,
        method: 'POST',
        formData: {
            api_key: cfg.appKey,
            app_secret: cfg.appSecret,
            image_url:filePath
        }
  }
​
  const isCatPic = false;
  const result = await rp(options);
  const objects = JSON.parse(result).objects;
  objects.forEach(obj => {
    if(obj.value === 'Cat' ) {
        isCatPic = true;
    }
  });
  return isCatPic;
}

效果展示

很简单的完成整个工程:展示一下效果

scan.png

参考资料: