diff --git a/ObjBodyFile/Sample/aa.mtl b/ObjBodyFile/Sample/aa.mtl new file mode 100644 index 0000000..05f7434 --- /dev/null +++ b/ObjBodyFile/Sample/aa.mtl @@ -0,0 +1,9 @@ + +newmtl material_0 +Ka 0.200000 0.200000 0.200000 +Kd 1.000000 1.000000 1.000000 +Ks 1.000000 1.000000 1.000000 +Tr 0.000000 +illum 2 +Ns 1.000000 +map_Kd aa.png \ No newline at end of file diff --git a/ObjBodyFile/Sample/aa.obj b/ObjBodyFile/Sample/aa.obj new file mode 100644 index 0000000..fc95b36 --- /dev/null +++ b/ObjBodyFile/Sample/aa.obj @@ -0,0 +1,17 @@ + +mtllib aa.mtl + +v 0 0 0 +v 1 0 0 +v 1 1 0 +v 0 1 0 + +vt 0 0 +vt 2 0 +vt 2 1 +vt 0 1 + +usemtl material_0 + +f 1/1 2/2 3/3 +f 1/1 3/3 4/4 \ No newline at end of file diff --git a/ObjBodyFile/Sample/aa.png b/ObjBodyFile/Sample/aa.png new file mode 100644 index 0000000..179bf86 Binary files /dev/null and b/ObjBodyFile/Sample/aa.png differ diff --git a/OpenCV/contours/blackBG.jpg b/OpenCV/contours/blackBG.jpg new file mode 100644 index 0000000..fe77ab8 Binary files /dev/null and b/OpenCV/contours/blackBG.jpg differ diff --git a/OpenCV/contours/image.jpg b/OpenCV/contours/image.jpg new file mode 100644 index 0000000..86066e1 Binary files /dev/null and b/OpenCV/contours/image.jpg differ diff --git a/OpenCV/contours/test.ipynb b/OpenCV/contours/test.ipynb new file mode 100644 index 0000000..3421064 --- /dev/null +++ b/OpenCV/contours/test.ipynb @@ -0,0 +1,163 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import cv2\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "img =cv2.imread(\"blackBG.jpg\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# grayscale \n", + "# https://docs.opencv.org/4.5.0/d7/d4d/tutorial_py_thresholding.html\n", + "gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n", + "ret,bin_img = cv2.threshold(gray_img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 972.5, 917.5, -0.5)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# RETR_EXTERNAL:仅外圈轮廓\n", + "contours, hierarchy = cv2.findContours(bin_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n", + "\n", + "cv2.drawContours(img,contours,-1,(0,255,0),5)\n", + "plt.imshow(img[...,::-1])\n", + "plt.axis('off')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# RetrievalModes:https://docs.opencv.org/4.5.0/d3/dc0/group__imgproc__shape.html#ga819779b9857cc2f8601e6526a3a5bc71\n", + "#ContourApproximationModes:https://docs.opencv.org/4.5.0/d3/dc0/group__imgproc__shape.html#ga4303f45752694956374734a03c54d5ff\n", + "contours, hierarchy = cv2.findContours(bin_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 972.5, 917.5, -0.5)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cv2.drawContours(img,contours,-1,(0,255,0),5)\n", + "plt.imshow(img[...,::-1])\n", + "plt.axis('off')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/OpenCV/contours/whiteBG.jpg b/OpenCV/contours/whiteBG.jpg new file mode 100644 index 0000000..91b4fee Binary files /dev/null and b/OpenCV/contours/whiteBG.jpg differ diff --git a/flaskfile/server.py b/flaskfile/server.py index 8d46782..50e9463 100644 --- a/flaskfile/server.py +++ b/flaskfile/server.py @@ -1,5 +1,5 @@ from werkzeug.utils import secure_filename -from flask import Flask,render_template,jsonify,request,url_for,send_from_directory +from flask import Flask,render_template,jsonify,request,url_for,send_from_directory,redirect import time import os import base64 @@ -30,7 +30,7 @@ def api_upload(): fname = request.form["name"] if f and allowed_file(fname): # 判断是否是允许上传的文件类型 f.save(os.path.join(file_dir,fname)) #保存文件到upload目录 - print(url_for('uploaded_file',filename=fname)) + #return redirect(url_for('uploaded_file',filename=fname)) return jsonify({"succeed":'True',"msg":"upload succeed"}) else: return jsonify({"succeed":'False',"msg":"upload failed"}) diff --git a/flaskfile/upload/1.jpg b/flaskfile/upload/1.jpg deleted file mode 100644 index b38aad7..0000000 Binary files a/flaskfile/upload/1.jpg and /dev/null differ diff --git a/flaskfile/upload/3.jpg b/flaskfile/upload/3.jpg new file mode 100644 index 0000000..1d874e2 Binary files /dev/null and b/flaskfile/upload/3.jpg differ