├── public
├── favicon.ico
└── index.html
├── src
├── assets
│ └── logo.png
├── shims-vue.d.ts
├── utils
│ └── axios.ts
├── main.ts
├── router
│ └── index.ts
├── components
│ └── DialogAddFace.vue
├── views
│ ├── FaceStream.vue
│ ├── FaceRecognition.vue
│ ├── FaceDetect.vue
│ └── FaceCompare.vue
└── App.vue
├── babel.config.js
├── .gitignore
├── vue.config.js
├── jsconfig.json
├── README.md
├── tsconfig.json
└── package.json
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itboyst/ArcSoftFaceDemoUI/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itboyst/ArcSoftFaceDemoUI/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | declare module '*.vue' {
3 | import type { DefineComponent } from 'vue'
4 | const component: DefineComponent<{}, {}, any>
5 | export default component
6 | }
7 |
--------------------------------------------------------------------------------
/src/utils/axios.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 |
3 |
4 |
5 | axios.interceptors.response.use(res => {
6 | // if (typeof res.data !== 'object' && typeof res.data !== '') {
7 | // console.error("请求异常")
8 | // return Promise.reject(res)
9 | // }
10 | return res.data
11 | })
12 |
13 | export default axios
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const { defineConfig } = require('@vue/cli-service')
2 | module.exports = defineConfig({
3 | transpileDependencies: true,
4 | lintOnSave:false,
5 | devServer: {
6 | port: 8088,
7 | proxy: {
8 | "/": {
9 | target: "http://127.0.0.1:8089",
10 | changeOrigin: true,
11 | ws: false,
12 | }
13 | }}
14 | })
15 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "esnext",
5 | "baseUrl": "./",
6 | "moduleResolution": "node",
7 | "paths": {
8 | "@/*": [
9 | "src/*"
10 | ]
11 | },
12 | "lib": [
13 | "esnext",
14 | "dom",
15 | "dom.iterable",
16 | "scripthost"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # arcface-ui
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 |
4 |
5 | import router from './router'
6 | // import store from './store'
7 |
8 | import ElementPlus from 'element-plus'
9 |
10 | import 'element-plus/dist/index.css'
11 |
12 |
13 | const app =createApp(App)
14 |
15 | //确保 _use_ 路由实例使
16 | //整个应用支持路由。
17 | app.use(router)
18 | // app.use(store)
19 | app.use(ElementPlus);
20 |
21 | app.mount('#app')
22 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import {createRouter, createWebHashHistory, RouteRecordRaw} from "vue-router";
2 |
3 |
4 | const routes: Array = [
5 | {
6 | path: '/',
7 | component: () => import("@/views/FaceDetect.vue")
8 | },
9 | {
10 | path: '/faceDetect',
11 | component: () =>import("@/views/FaceDetect.vue")
12 | },
13 | {
14 | path: '/faceCompare',
15 | component: () => import("@/views/FaceCompare.vue")
16 | },
17 | {
18 | path: '/faceRecognition',
19 | component: () => import("@/views/FaceRecognition.vue")
20 | },
21 | {
22 | path: '/faceStream',
23 | component: () =>import("@/views/FaceStream.vue")
24 | }
25 | ]
26 |
27 |
28 | const router = createRouter({
29 | history: createWebHashHistory(),
30 | routes: routes
31 | })
32 |
33 | export default router;
34 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "module": "esnext",
5 | "strict": true,
6 | "jsx": "preserve",
7 | "moduleResolution": "node",
8 | "experimentalDecorators": true,
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "forceConsistentCasingInFileNames": true,
14 | "useDefineForClassFields": true,
15 | "sourceMap": true,
16 | "baseUrl": ".",
17 | "types": [
18 | "webpack-env"
19 | ],
20 | "paths": {
21 | "@/*": [
22 | "src/*"
23 | ]
24 | },
25 | "lib": [
26 | "esnext",
27 | "dom",
28 | "dom.iterable",
29 | "scripthost"
30 | ]
31 | },
32 | "include": [
33 | "src/**/*.ts",
34 | "src/**/*.tsx",
35 | "src/**/*.vue",
36 | "tests/**/*.ts",
37 | "tests/**/*.tsx"
38 | ],
39 | "exclude": [
40 | "node_modules"
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "arcface-ui",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@element-plus/icons-vue": "^1.1.4",
12 | "axios": "1.7.4",
13 | "core-js": "^3.8.3",
14 | "element-plus": "^2.1.6",
15 | "tsload": "^1.0.0",
16 | "vue": "^3.2.13",
17 | "vue-class-component": "^8.0.0-0",
18 | "vue-router": "^4.0.14",
19 | "vuex": "^4.0.2",
20 | "xgplayer": "^2.31.4",
21 | "xgplayer-flv": "^2.5.1"
22 | },
23 | "devDependencies": {
24 | "@babel/core": "^7.12.16",
25 | "@babel/eslint-parser": "^7.12.16",
26 | "@typescript-eslint/eslint-plugin": "^5.4.0",
27 | "@typescript-eslint/parser": "^5.4.0",
28 | "@vue/cli-plugin-babel": "~5.0.0",
29 | "@vue/cli-plugin-eslint": "~5.0.0",
30 | "@vue/cli-plugin-typescript": "~5.0.0",
31 | "@vue/cli-service": "~5.0.0",
32 | "@vue/eslint-config-typescript": "^9.1.0",
33 | "eslint": "^7.32.0",
34 | "eslint-plugin-vue": "^8.0.3",
35 | "typescript": "~4.5.5"
36 | },
37 | "eslintConfig": {
38 | "root": true,
39 | "env": {
40 | "node": true
41 | },
42 | "extends": [
43 | "plugin:vue/vue3-essential",
44 | "eslint:recommended",
45 | "@vue/typescript"
46 | ],
47 | "parserOptions": {
48 | "parser": "@typescript-eslint/parser"
49 | },
50 | "rules": {}
51 | },
52 | "browserslist": [
53 | "> 1%",
54 | "last 2 versions",
55 | "not dead",
56 | "not ie 11"
57 | ]
58 | }
59 |
--------------------------------------------------------------------------------
/src/components/DialogAddFace.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
32 |
33 |
34 |
35 |
36 |
87 |
88 |
--------------------------------------------------------------------------------
/src/views/FaceStream.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
32 | 播放
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
104 |
105 |
--------------------------------------------------------------------------------
/src/views/FaceRecognition.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 人脸识别示例
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 选择下拉照片
25 |
26 |
32 |
33 |
34 |
35 |
36 |
37 |
42 | 上传本地照片检测
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
118 |
119 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 人脸检测
25 |
26 |
27 |
28 |
29 |
30 | 人脸相似度
31 |
32 |
33 |
34 |
35 |
36 | 人脸识别
37 |
38 |
39 |
40 |
41 |
42 | 视频流识别
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
88 |
89 |
153 |
191 |
--------------------------------------------------------------------------------
/src/views/FaceDetect.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 人脸检测示例
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 选择下拉照片
25 |
26 |
32 |
33 |
34 |
35 |
36 |
37 |
43 | 上传本地照片检测
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
142 |
143 |
--------------------------------------------------------------------------------
/src/views/FaceCompare.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
照片1
7 |
8 |
9 | Loading...
10 |
11 |
12 |
13 | 选择下拉照片
14 |
15 |
21 |
22 |
23 |
24 |
25 |
26 |
31 | 上传本地照片检测
32 |
33 |
34 |
35 |
36 |
37 |
照片2
38 |
39 |
40 | Loading...
41 |
42 |
43 |
44 | 选择下拉照片
45 |
46 |
52 |
53 |
54 |
55 |
56 |
61 | 上传本地照片检测
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | 人脸相似度为: {{ state.similar }}
70 |
71 |
72 |
73 |
74 |
75 |
182 |
183 |
--------------------------------------------------------------------------------