-report system -started public transit -started openpose(not necessary)old
@ -0,0 +1,249 @@ | |||||
package gq.yigit.mycity; | |||||
import android.Manifest; | |||||
import android.app.Dialog; | |||||
import android.content.Context; | |||||
import android.content.Intent; | |||||
import android.content.pm.PackageManager; | |||||
import android.graphics.Bitmap; | |||||
import android.net.Uri; | |||||
import android.os.Bundle; | |||||
import android.os.Environment; | |||||
import android.provider.MediaStore; | |||||
import android.support.annotation.NonNull; | |||||
import android.support.v4.app.ActivityCompat; | |||||
import android.support.v4.app.Fragment; | |||||
import android.support.v4.content.ContextCompat; | |||||
import android.util.Base64; | |||||
import android.util.Log; | |||||
import android.view.LayoutInflater; | |||||
import android.view.View; | |||||
import android.view.ViewGroup; | |||||
import android.widget.*; | |||||
import gq.yigit.mycity.tools.FileActions; | |||||
import gq.yigit.mycity.tools.WebRequest; | |||||
import org.json.JSONArray; | |||||
import org.json.JSONException; | |||||
import org.json.JSONObject; | |||||
import java.io.ByteArrayOutputStream; | |||||
import java.io.File; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.ArrayList; | |||||
import java.util.Date; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import static android.app.Activity.RESULT_OK; | |||||
public class DenunciationFragment extends Fragment implements WebRequest.responseListener { | |||||
private OnFragmentInteractionListener mListener; | |||||
private int reps = 0; | |||||
private String url; | |||||
private DenunciationFragment activity; | |||||
private Spinner spinner; | |||||
private String emergency; | |||||
private Button submit; | |||||
private EditText note; | |||||
private Bitmap img; | |||||
private ImageButton img_button; | |||||
private static final int CAMERA_REQUEST = 1888; | |||||
public DenunciationFragment() { | |||||
} | |||||
public static DenunciationFragment newInstance(String param1, String param2) { | |||||
DenunciationFragment fragment = new DenunciationFragment(); | |||||
return fragment; | |||||
} | |||||
@Override | |||||
public void onCreate(Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
} | |||||
@Override | |||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, | |||||
Bundle savedInstanceState) { | |||||
View rootView = inflater.inflate(R.layout.fragment_denunciation, container, false); | |||||
FileActions file_manager = new FileActions(); | |||||
url = file_manager.readFromFile(getContext(),"server.config").trim(); | |||||
activity=this; | |||||
submit = rootView.findViewById(R.id.denunciation_submit); | |||||
note = (EditText) rootView.findViewById(R.id.denunciation_text); | |||||
img_button= rootView.findViewById(R.id.denunciation_photo); | |||||
spinner = rootView.findViewById(R.id.denunciation_spinner); | |||||
if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { | |||||
img_button.setEnabled(false); | |||||
ActivityCompat.requestPermissions(getActivity(), new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0); | |||||
} | |||||
submit.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
HashMap<String,String> args = new HashMap<>(); | |||||
try { | |||||
args.put("id", MainActivity.userData.getString("id")); | |||||
}catch (JSONException e){} | |||||
args.put("emergency",emergency); | |||||
args.put("note",note.getText().toString()); | |||||
args.put("accepted","false"); | |||||
if(img != null) { | |||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); | |||||
img.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); | |||||
byte[] byteArray = byteArrayOutputStream.toByteArray(); | |||||
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); | |||||
args.put("photo", encoded); | |||||
}else{ | |||||
args.put("photo", "null"); | |||||
} | |||||
WebRequest request = new WebRequest(url+"/denunciation",false,args); | |||||
request.addListener(activity); | |||||
request.execute(); | |||||
} | |||||
}); | |||||
img_button.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); | |||||
startActivityForResult(cameraIntent, CAMERA_REQUEST); | |||||
} | |||||
}); | |||||
ArrayAdapter<String> adapter; | |||||
final List<String> list = new ArrayList<String>(); | |||||
list.add("Please Select..."); | |||||
list.add("Ambulance"); | |||||
list.add("Police"); | |||||
list.add("Fire"); | |||||
adapter = new ArrayAdapter<String>(getContext(), | |||||
android.R.layout.simple_spinner_item, list); | |||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | |||||
spinner.setAdapter(adapter); | |||||
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { | |||||
@Override | |||||
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { | |||||
Log.i("[INFO]",String.valueOf(position)); | |||||
if(position>0) {emergency = list.get(position);} } | |||||
@Override | |||||
public void onNothingSelected(AdapterView<?> parentView) { | |||||
} | |||||
}); | |||||
return rootView; | |||||
} | |||||
public void onButtonPressed(Uri uri) { | |||||
if (mListener != null) { | |||||
mListener.onFragmentInteraction(uri); | |||||
} | |||||
} | |||||
@Override | |||||
public void onAttach(Context context) { | |||||
super.onAttach(context); | |||||
if (context instanceof OnFragmentInteractionListener) { | |||||
mListener = (OnFragmentInteractionListener) context; | |||||
} else { | |||||
} | |||||
} | |||||
@Override | |||||
public void onDetach() { | |||||
super.onDetach(); | |||||
mListener = null; | |||||
} | |||||
public interface OnFragmentInteractionListener { | |||||
void onFragmentInteraction(Uri uri); | |||||
} | |||||
public void receivedResponse(boolean success, String response) { | |||||
try { | |||||
JSONObject received = new JSONObject(response); | |||||
if (reps % 2 == 0) { | |||||
if ((boolean) received.get("success")) { | |||||
Toast.makeText(getContext(), "Success", Toast.LENGTH_SHORT).show(); | |||||
} else { | |||||
reps++; | |||||
final Dialog dialog = new Dialog(getContext()); | |||||
dialog.setContentView(R.layout.popup_confirmation); | |||||
Button dialogButton = (Button) dialog.findViewById(R.id.confirm_button); | |||||
((TextView)dialog.findViewById(R.id.confirm_text)).setText("If this alert is wrong, you will receive a penalty of " + received.getString("penalty") +"$"); | |||||
dialogButton.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View v) { | |||||
dialog.dismiss(); | |||||
HashMap<String,String> args = new HashMap<>(); | |||||
try { | |||||
args.put("id", MainActivity.userData.getString("id")); | |||||
}catch (JSONException e){} | |||||
args.put("emergency",emergency); | |||||
args.put("note",note.getText().toString()); | |||||
if(img != null) { | |||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); | |||||
img.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); | |||||
byte[] byteArray = byteArrayOutputStream.toByteArray(); | |||||
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); | |||||
args.put("photo", encoded); | |||||
}else{ | |||||
args.put("photo", "null"); | |||||
} | |||||
args.put("accepted","true"); | |||||
WebRequest requestConfirm = new WebRequest(url+"/denunciation",false,args); | |||||
requestConfirm.addListener(activity); | |||||
requestConfirm.execute(); | |||||
} | |||||
}); | |||||
dialog.show(); | |||||
} | |||||
}else{ | |||||
reps ++; | |||||
if ((boolean) received.get("success")) { | |||||
Toast.makeText(getContext(), "Success", Toast.LENGTH_SHORT).show(); | |||||
}else{ | |||||
Toast.makeText(getContext(), "An error occured", Toast.LENGTH_SHORT).show(); | |||||
} | |||||
} | |||||
} catch (JSONException e) { } | |||||
} | |||||
@Override | |||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | |||||
if (requestCode == 0) { | |||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED | |||||
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) { | |||||
img_button.setEnabled(true); | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,9 @@ | |||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" | |||||
android:viewportWidth="512" | |||||
android:viewportHeight="512" | |||||
android:width="512dp" | |||||
android:height="512dp"> | |||||
<path | |||||
android:pathData="M507.494 426.066L282.864 53.537c-5.677 -9.415 -15.87 -15.172 -26.865 -15.172c-10.995 0 -21.188 5.756 -26.865 15.172L4.506 426.066c-5.842 9.689 -6.015 21.774 -0.451 31.625c5.564 9.852 16.001 15.944 27.315 15.944h449.259c11.314 0 21.751 -6.093 27.315 -15.944C513.508 447.839 513.336 435.755 507.494 426.066zM256.167 167.227c12.901 0 23.817 7.278 23.817 20.178c0 39.363 -4.631 95.929 -4.631 135.292c0 10.255 -11.247 14.554 -19.186 14.554c-10.584 0 -19.516 -4.3 -19.516 -14.554c0 -39.363 -4.63 -95.929 -4.63 -135.292C232.021 174.505 242.605 167.227 256.167 167.227zM256.498 411.018c-14.554 0 -25.471 -11.908 -25.471 -25.47c0 -13.893 10.916 -25.47 25.471 -25.47c13.562 0 25.14 11.577 25.14 25.47C281.638 399.11 270.06 411.018 256.498 411.018z" | |||||
android:fillColor="#000000" /> | |||||
</vector> |
@ -0,0 +1,9 @@ | |||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" | |||||
android:viewportWidth="286.054" | |||||
android:viewportHeight="286.054" | |||||
android:width="286.054dp" | |||||
android:height="286.054dp"> | |||||
<path | |||||
android:pathData="M143.027 0C64.04 0 0 64.04 0 143.027c0 78.996 64.04 143.027 143.027 143.027c78.996 0 143.027 -64.022 143.027 -143.027C286.054 64.04 222.022 0 143.027 0zM143.027 259.236c-64.183 0 -116.209 -52.026 -116.209 -116.209S78.844 26.818 143.027 26.818s116.209 52.026 116.209 116.209S207.21 259.236 143.027 259.236zM143.036 62.726c-10.244 0 -17.995 5.346 -17.995 13.981v79.201c0 8.644 7.75 13.972 17.995 13.972c9.994 0 17.995 -5.551 17.995 -13.972V76.707C161.03 68.277 153.03 62.726 143.036 62.726zM143.036 187.723c-9.842 0 -17.852 8.01 -17.852 17.86c0 9.833 8.01 17.843 17.852 17.843s17.843 -8.01 17.843 -17.843C160.878 195.732 152.878 187.723 143.036 187.723z" | |||||
android:fillColor="#E2574C" /> | |||||
</vector> |
@ -0,0 +1,34 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
tools:context=".DenunciationFragment" android:orientation="vertical" android:layout_marginTop="60dp"> | |||||
<!-- TODO: Update blank fragment layout --> | |||||
<Spinner | |||||
android:layout_width="match_parent" | |||||
android:layout_height="39dp" android:id="@+id/denunciation_spinner"/> | |||||
<EditText | |||||
android:layout_width="match_parent" | |||||
android:layout_height="221dp" | |||||
android:inputType="textMultiLine" | |||||
android:ems="10" | |||||
android:id="@+id/denunciation_text" | |||||
android:layout_marginTop="8dp"/> | |||||
<LinearLayout | |||||
android:orientation="horizontal" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:layout_marginTop="8dp"> | |||||
<ImageButton | |||||
android:src="@drawable/ic_menu_camera" | |||||
android:layout_width="153dp" | |||||
android:layout_height="wrap_content" android:id="@+id/denunciation_photo" android:layout_weight="1"/> | |||||
<Button | |||||
android:text="Submit" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" android:id="@+id/denunciation_submit" android:layout_weight="1"/> | |||||
</LinearLayout> | |||||
</LinearLayout> |
@ -0,0 +1,35 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||||
xmlns:tools="http://schemas.android.com/tools" | |||||
android:orientation="vertical" android:layout_width="match_parent" | |||||
android:layout_height="match_parent"> | |||||
<TextView | |||||
android:text="If this alert is wrong, you will receive a penalty of " | |||||
android:layout_width="244dp" | |||||
android:layout_height="wrap_content" | |||||
android:id="@+id/confirm_text" | |||||
android:textStyle="normal|bold" | |||||
android:textSize="18sp" | |||||
android:layout_alignParentTop="true" | |||||
android:layout_marginTop="193dp" android:layout_centerHorizontal="true" android:textColor="#000000"/> | |||||
<Button | |||||
android:id="@+id/confirm_button" | |||||
android:layout_width="200dp" | |||||
android:layout_height="wrap_content" | |||||
android:text="OK" | |||||
android:paddingRight="5dp" | |||||
android:textSize="18sp" | |||||
style="@android:style/Widget.Button" | |||||
tools:ignore="RtlHardcoded,RtlSymmetry" | |||||
android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" | |||||
android:layout_marginBottom="211dp" android:background="@android:color/holo_red_dark"/> | |||||
<ImageView | |||||
android:layout_width="191dp" | |||||
android:layout_height="181dp" app:srcCompat="@drawable/warning" | |||||
android:layout_centerHorizontal="true" android:id="@+id/imageView" | |||||
android:layout_alignParentTop="true"/> | |||||
</RelativeLayout> |
@ -0,0 +1,28 @@ | |||||
from flask import Flask, request | |||||
from flask_restful import Resource, Api, abort | |||||
import json | |||||
import os | |||||
app = Flask(__name__) | |||||
api = Api(app) | |||||
db_path = os.path.join(app.root_path, 'databases', 'users.json') | |||||
with open(db_path, 'r') as f: | |||||
users = json.load(f) | |||||
class Alert(Resource): | |||||
def post(self): | |||||
args = request.form | |||||
username= "" | |||||
for user in users: | |||||
if users[user]["id"] == args["id"]: | |||||
username=user | |||||
break | |||||
trust = int(users[username]["trustability"]) | |||||
if trust > 20 or args["accepted"] == "true": | |||||
return {"success":True} | |||||
else: | |||||
return {"success":False,"penalty":"{}".format(100*(20-trust))} |
@ -0,0 +1,63 @@ | |||||
from flask import Flask, request | |||||
from flask_restful import Resource, Api, abort | |||||
import requests | |||||
import json | |||||
app = Flask( __name__ ) | |||||
api = Api( app ) | |||||
bus_data = open("databases/bus.json","a") | |||||
def sendRequest( url, raw ): | |||||
headers = { | |||||
"User-Agent": "EGO Genel Mudurlugu-EGO Cepte-3.1.0 GT-I9500 7.1.2", | |||||
"Content-Type": "application/x-www-form-urlencoded", | |||||
"Content-Length": "0" } | |||||
headers[ "Content-Length" ] = str( len( raw ) ) | |||||
r = requests.post( url, headers=headers, data=raw ) | |||||
content = r.content.decode( "cp1252" ) | |||||
content = content.replace( "Ý", "I" ) | |||||
content = content.replace( "ý", "i" ) | |||||
content = content.replace( "ð", "g" ) | |||||
content = content.replace( "þ", "s" ) | |||||
content = content.replace( "Þ", "S" ) | |||||
return content | |||||
conn1 = sendRequest( | |||||
'http://88.255.141.70/mbl/android/connect.asp?SID=0.9672804113380772&VER=3.1.0&LAN=tr&UID=%7BACB78701' \ | |||||
'-2727-4E9A-AE62-28491D671A7D%7D-130570234&FNC=Connect', | |||||
"UID=%7BACB78701-2727-4E9A-AE62-28491D671A7D%7D-130570234&UPS=TRUE" ) | |||||
conn2 = sendRequest( | |||||
'http://88.255.141.66/mbl/android/connect.asp?SID=0.6654049014198404&VER=3.1.0&LAN=tr&UID=%7BACB78701' \ | |||||
'-2727-4E9A-AE62-28491D671A7D%7D-130570234&FNC=Start', "" ) | |||||
hatlar = sendRequest( 'http://88.255.141.66/mbl/android/action.asp?SID=0.8328642811845514&VER=3.1.0&LAN=tr&UID' | |||||
'=%7BACB78701-2727-4E9A-AE62-28491D671A7D%7D-130570234&FNC=Hatlar', "QUERY=" ) | |||||
hatlar = hatlar.replace( "'", '"' ) | |||||
hatlar = json.loads( hatlar ) | |||||
class Transit( Resource ): | |||||
def post( self ): | |||||
args = request.form | |||||
durak = sendRequest( | |||||
"http://88.255.141.66/mbl/android/service.asp?SID=0.09912588645045828&VER=3.1.0&LAN=tr&UID=%7BACB78701" \ | |||||
"-2727-4E9A-AE62-28491D671A7D%7D-130570234&FNC=Otobusler", "DURAK=" + str( args[ "stop" ] ) ) | |||||
durak = durak.replace( "'", '"' ) | |||||
durak = json.loads( durak ) | |||||
return [durak,hatlar] | |||||
if __name__ == '__main__': | |||||
api.add_resource( Transit, '/transit', '/transit/' ) | |||||
app.run( host='0.0.0.0', port=5000 ) |
@ -0,0 +1,60 @@ | |||||
# Created by .ignore support plugin (hsz.mobi) | |||||
### JetBrains template | |||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm | |||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 | |||||
# User-specific stuff | |||||
.idea/**/workspace.xml | |||||
.idea/**/tasks.xml | |||||
.idea/**/dictionaries | |||||
.idea/**/shelf | |||||
# Sensitive or high-churn files | |||||
.idea/**/dataSources/ | |||||
.idea/**/dataSources.ids | |||||
.idea/**/dataSources.local.xml | |||||
.idea/**/sqlDataSources.xml | |||||
.idea/**/dynamic.xml | |||||
.idea/**/uiDesigner.xml | |||||
.idea/**/dbnavigator.xml | |||||
# Gradle | |||||
.idea/**/gradle.xml | |||||
.idea/**/libraries | |||||
# CMake | |||||
cmake-build-debug/ | |||||
cmake-build-release/ | |||||
# Mongo Explorer plugin | |||||
.idea/**/mongoSettings.xml | |||||
# File-based project format | |||||
*.iws | |||||
# IntelliJ | |||||
out/ | |||||
# mpeltonen/sbt-idea plugin | |||||
.idea_modules/ | |||||
# JIRA plugin | |||||
atlassian-ide-plugin.xml | |||||
# Cursive Clojure plugin | |||||
.idea/replstate.xml | |||||
# Crashlytics plugin (for Android Studio and IntelliJ) | |||||
com_crashlytics_export_strings.xml | |||||
crashlytics.properties | |||||
crashlytics-build.properties | |||||
fabric.properties | |||||
# Editor-based Rest Client | |||||
.idea/httpRequests | |||||
face/* | |||||
hand/* | |||||
pose/* | |||||
cameraParameters/* | |||||
cameraParameters/*/* |
@ -0,0 +1,85 @@ | |||||
import cv2 | |||||
import time | |||||
import numpy as np | |||||
MODE = "MPI" | |||||
if MODE is "COCO": | |||||
protoFile = "pose/coco/pose_deploy_linevec.prototxt" | |||||
weightsFile = "pose/coco/pose_iter_440000.caffemodel" | |||||
nPoints = 18 | |||||
POSE_PAIRS = [ [1,0],[1,2],[1,5],[2,3],[3,4],[5,6],[6,7],[1,8],[8,9],[9,10],[1,11],[11,12],[12,13],[0,14],[0,15],[14,16],[15,17]] | |||||
elif MODE is "MPI" : | |||||
protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt" | |||||
weightsFile = "pose/mpi/pose_iter_160000.caffemodel" | |||||
nPoints = 15 | |||||
POSE_PAIRS = [[0,1], [1,2], [2,3], [3,4], [1,5], [5,6], [6,7], [1,14], [14,8], [8,9], [9,10], [14,11], [11,12], [12,13] ] | |||||
frame = cv2.imread("single.jpeg") | |||||
frameCopy = np.copy(frame) | |||||
frameWidth = frame.shape[1] | |||||
frameHeight = frame.shape[0] | |||||
threshold = 0.2 | |||||
net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile) | |||||
t = time.time() | |||||
# input image dimensions for the network | |||||
inWidth = 368 | |||||
inHeight = 368 | |||||
inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), | |||||
(0, 0, 0), swapRB=False, crop=False) | |||||
net.setInput(inpBlob) | |||||
output = net.forward() | |||||
print("time taken by network : {:.3f}".format(time.time() - t)) | |||||
H = output.shape[2] | |||||
W = output.shape[3] | |||||
# Empty list to store the detected keypoints | |||||
points = [] | |||||
for i in range(nPoints): | |||||
# confidence map of corresponding body's part. | |||||
probMap = output[0, i, :, :] | |||||
# Find global maxima of the probMap. | |||||
minVal, prob, minLoc, point = cv2.minMaxLoc(probMap) | |||||
# Scale the point to fit on the original image | |||||
x = (frameWidth * point[0]) / W | |||||
y = (frameHeight * point[1]) / H | |||||
if prob > threshold : | |||||
cv2.circle(frameCopy, (int(x), int(y)), 8, (0, 255, 255), thickness=-1, lineType=cv2.FILLED) | |||||
cv2.putText(frameCopy, "{}".format(i), (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, lineType=cv2.LINE_AA) | |||||
# Add the point to the list if the probability is greater than the threshold | |||||
points.append((int(x), int(y))) | |||||
else : | |||||
points.append(None) | |||||
# Draw Skeleton | |||||
for pair in POSE_PAIRS: | |||||
partA = pair[0] | |||||
partB = pair[1] | |||||
if points[partA] and points[partB]: | |||||
cv2.line(frame, points[partA], points[partB], (0, 255, 255), 2) | |||||
cv2.circle(frame, points[partA], 8, (0, 0, 255), thickness=-1, lineType=cv2.FILLED) | |||||
cv2.imshow('Output-Keypoints', cv2.resize(frameCopy,(900,900))) | |||||
cv2.imshow('Output-Skeleton', cv2.resize(frame,(600,900))) | |||||
cv2.imwrite('Output-Keypoints.jpg', frameCopy) | |||||
cv2.imwrite('Output-Skeleton.jpg', frame) | |||||
print("Total time taken : {:.3f}".format(time.time() - t)) | |||||
cv2.waitKey(0) |
@ -0,0 +1,15 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<module type="WEB_MODULE" version="4"> | |||||
<component name="FacetManager"> | |||||
<facet type="Python" name="Python"> | |||||
<configuration sdkName="Python 3.7" /> | |||||
</facet> | |||||
</component> | |||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> | |||||
<exclude-output /> | |||||
<content url="file://$MODULE_DIR$" /> | |||||
<orderEntry type="inheritedJdk" /> | |||||
<orderEntry type="sourceFolder" forTests="false" /> | |||||
<orderEntry type="library" name="Python 3.7 interpreter library" level="application" /> | |||||
</component> | |||||
</module> |