testing and added data for testing similarity

This commit is contained in:
kicap1992
2022-10-02 17:55:45 +08:00
parent 34175cf48c
commit f16cc651da
36 changed files with 1161 additions and 452 deletions

File diff suppressed because one or more lines are too long

BIN
1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
aran.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

BIN
circle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
croped.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
croped1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
croped11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

74
dataset.json Normal file
View File

@ -0,0 +1,74 @@
[
{
"id": "1.png",
"datanya": "Garis kehidupan anda yang panjang menunjukkan anda seorang yang lincah dan penuh semangat.\nGaris nasib anda yang tumbuh dari garis pikiran menandakan bahwa anda akan memperoleh nafkah dari bidang seni atau pendidikan seperti seniman, artis, sarjana atau para guru.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "1_2.png",
"datanya": "Garis kehidupan anda yang panjang menunjukkan anda seorang yang lincah dan penuh semangat.\nGaris nasib anda yang tumbuh dari garis pikiran menandakan bahwa anda akan memperoleh nafkah dari bidang seni atau pendidikan seperti seniman, artis, sarjana atau para guru.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "1_3.png",
"datanya": "Garis kehidupan anda yang panjang menunjukkan anda seorang yang lincah dan penuh semangat.\nGaris nasib anda yang tumbuh dari garis pikiran menandakan bahwa anda akan memperoleh nafkah dari bidang seni atau pendidikan seperti seniman, artis, sarjana atau para guru.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "1_4.png",
"datanya": "Garis kehidupan anda yang panjang menunjukkan anda seorang yang lincah dan penuh semangat.\nGaris nasib anda yang tumbuh dari garis pikiran menandakan bahwa anda akan memperoleh nafkah dari bidang seni atau pendidikan seperti seniman, artis, sarjana atau para guru.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "1_5.png",
"datanya": "Garis kehidupan anda yang panjang menunjukkan anda seorang yang lincah dan penuh semangat.\nGaris nasib anda yang tumbuh dari garis pikiran menandakan bahwa anda akan memperoleh nafkah dari bidang seni atau pendidikan seperti seniman, artis, sarjana atau para guru.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2_2.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2_3.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2_4.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2_5.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "2_6.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang panjang,tumbuh dari bagian garis kehidupan yang rendah, berarti anda seseorang yang mendapatkan keberuntungan dari ketekunan dan tekadnya yang keras.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_2.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_3.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_4.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_5.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_6.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
},
{
"id": "3_7.png",
"datanya": "Garis kehidupan anda yang pdekat dengan ibu jari menunjukkan anda seseorang yang memiliki vitalitas rendah.\nGaris nasib yang tumbuh dari bawah garis kehidupan, bisa jadi seorang anak yang memulai usaha dengan modal dari orang tua, istri bisa berbisnis dengan bantuan modal suami, dan semacamnya.\nGaris pikiran anda berada di tengah yang menunjukkan garis pikiran yang standar yang naninya akan berkarir biasa dan mendapat pencapaian biasa dalam kehidupan.\nGaris cinta yang sedang menunjukkan anda memiliki kehidupan cinta yang biasa-biasa saja"
}
]

BIN
dst.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
dst2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
hehe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
hije.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

BIN
images/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
images/1_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/1_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/1_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/1_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
images/2_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
images/2_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/2_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/2_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/2_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
images/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
images/3_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
images/3_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/3_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
images/3_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
images/3_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
images/3_7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,33 +1,27 @@
import cv2 import json
import numpy as np
# from matplotlib.pyplot import imshow
# from google.colab.patches import cv2_imshow
# !wget https://i.stack.imgur.com/sDQLM.png
#read image
image = cv2.imread( "croped.png")
width = 350 data = None
height = 450
dim = (width, height)
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA) with open('dataset.json') as f:
data = json.load(f)
# print(len(data))
#convert to gray
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#performing binary thresholding print(data)
kernel_size = 3 dictionary = [
ret,thresh = cv2.threshold(gray,200,255,cv2.THRESH_BINARY) {
"id" : 4,
"datanya" : "ini yang ke4"
}
]
#finding contours # # Serializing json
cnts = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) # json_object = json.dumps(dictionary, indent=4)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
#drawing Contours data.extend(dictionary)
radius =2 json_object = json.dumps(data, indent=4)
color = (30,255,50) print(json_object)
cv2.drawContours(image, cnts, -1,color , radius)
# cv2.imshow(image) commented as colab don't support cv2.imshow() # Writing to sample.json
cv2.imshow("",image) with open("dataset.json", "w") as outfile:
# cv2.waitKey() outfile.write(json_object)
cv2.waitKey(0)

BIN
mask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

BIN
result.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

BIN
riska.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

166
server.py
View File

@ -9,6 +9,7 @@ import cv2
import numpy as np import numpy as np
import mediapipe as mp import mediapipe as mp
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import json
# First step is to initialize the Hands class an store it in a variable # First step is to initialize the Hands class an store it in a variable
@ -38,7 +39,8 @@ def read_root():
@app.post("/") @app.post("/")
async def image(image: UploadFile = File(...)): async def image(image: UploadFile = File(...)):
content_type = image.content_type content_type = image.content_type
if(content_type != "image/jpeg" and content_type != "image/png") : print(content_type)
if(content_type != "image/jpeg" and content_type != "image/png" and content_type != "image/jpg") :
raise HTTPException(status_code=404, detail="Fail bukan foto") raise HTTPException(status_code=404, detail="Fail bukan foto")
image_name = image.filename image_name = image.filename
with open("temp/"+image_name, "wb") as buffer: with open("temp/"+image_name, "wb") as buffer:
@ -48,13 +50,19 @@ async def image(image: UploadFile = File(...)):
sample_img = cv2.flip(sample_img, 1) sample_img = cv2.flip(sample_img, 1)
results = hands.process(cv2.cvtColor(sample_img, cv2.COLOR_BGR2RGB)) results = hands.process(cv2.cvtColor(sample_img, cv2.COLOR_BGR2RGB))
if not results.multi_hand_landmarks: if not results.multi_hand_landmarks:
if os.path.exists("temp/"+image_name):
os.remove("temp/"+image_name)
raise HTTPException(status_code=404, detail="Foto harus ada telapak tangan") raise HTTPException(status_code=404, detail="Foto harus ada telapak tangan")
if len(results.multi_handedness) > 1: if len(results.multi_handedness) > 1:
if os.path.exists("temp/"+image_name):
os.remove("temp/"+image_name)
raise HTTPException(status_code=404, detail="Hanya satu telapak tangan yang bisa diramal") raise HTTPException(status_code=404, detail="Hanya satu telapak tangan yang bisa diramal")
tangan = results.multi_handedness[0].classification[0].label tangan = results.multi_handedness[0].classification[0].label
if(tangan == 'Right'): if(tangan == 'Right'):
if os.path.exists("temp/"+image_name):
os.remove("temp/"+image_name)
raise HTTPException(status_code=404, detail="Hanya Tangan Kiri Yang Bisa Diramal") raise HTTPException(status_code=404, detail="Hanya Tangan Kiri Yang Bisa Diramal")
thumb = None thumb = None
@ -64,20 +72,160 @@ async def image(image: UploadFile = File(...)):
pinky = hand_landmarks.landmark[mp_hands.HandLandmark.PINKY_TIP].x pinky = hand_landmarks.landmark[mp_hands.HandLandmark.PINKY_TIP].x
cek_tapak_tangan = thumb > pinky cek_tapak_tangan = thumb > pinky
if(cek_tapak_tangan == False): if(cek_tapak_tangan == False):
raise HTTPException(status_code=404, detail="Sila foto telapak tangan kiri anda")
if os.path.exists("temp/"+image_name): if os.path.exists("temp/"+image_name):
os.remove("temp/"+image_name) os.remove("temp/"+image_name)
raise HTTPException(status_code=404, detail="Sila foto telapak tangan kiri anda")
# if os.path.exists("temp/"+image_name):
# os.remove("temp/"+image_name)
return {"message": "lakukan ramalan"} return {"message": "lakukan ramalan"}
@app.post("/ramalan") # @app.post("/ramalan")
async def image( request: Request): # async def image( request: Request):
# body = await request.form()
# if body:
# print(body['image'].content_type)
# return {"filename": "image.filename"}
# else :
# raise HTTPException(status_code=404, detail="error")
def makeCircle(img,circle_y,circle_x,radius):
image_height, image_width, _ = img.shape
y = int(circle_y * image_height)
x = int(circle_x * image_width)
circle_coordinates = (x,y)
color = (255, 0, 0)
thickness = 2
return cv2.circle(img,circle_coordinates,radius,color,thickness)
@app.post("/ramalan")
async def ramalan(request: Request):
body = await request.form() body = await request.form()
if body: if(body == False) :
print(body['image'].file)
return {"filename": "image.filename"}
else :
raise HTTPException(status_code=404, detail="error") raise HTTPException(status_code=404, detail="error")
if(body['image'] == None and body['image'] == '' ):
raise HTTPException(status_code=404, detail="error")
# print(body['image'])
image_file = body['image'] #ini file yang akan digunakan
image_src = "temp/"+body['image'] #ini file yang akan digunakan
size = len(image_file)
image_name = image_file[:size - 4]
change_background_mp = mp.solutions.selfie_segmentation #untuk hapus background
change_bg_segment = change_background_mp.SelfieSegmentation() #untuk hapus background
with mp_hands.Hands(
static_image_mode=True,
max_num_hands=1,
min_detection_confidence=0.5) as hands:
image = cv2.flip(cv2.imread(image_src), 1)
sample_img = cv2.flip(cv2.imread(image_src), 1)
image = cv2.cvtColor(sample_img, cv2.COLOR_BGR2RGB)
image = change_bg_segment.process(image)
image = image.segmentation_mask > 0.9
image = np.dstack((image,image,image))
image = np.where(image, sample_img, 255)
shape = image.shape
results = hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
image_height, image_width, _ = image.shape
for hand_landmarks in results.multi_hand_landmarks:
palm_center_y = (hand_landmarks.landmark[mp_hands.HandLandmark.THUMB_CMC].y +
hand_landmarks.landmark[mp_hands.HandLandmark.PINKY_MCP].y)/2.1
palm_center_x = (hand_landmarks.landmark[mp_hands.HandLandmark.THUMB_CMC].x +
hand_landmarks.landmark[mp_hands.HandLandmark.PINKY_MCP].x)/2.1
myradius = int(image_height/4.9)
y = int(palm_center_y * image_height)
x = int(palm_center_x * image_width)
circle_coordinates = (x,y)
mask = np.zeros(image.shape, dtype=np.uint8)
cv2.circle(mask, circle_coordinates, myradius, (255,255,255), -1)
ROI = cv2.bitwise_and(image, mask)
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
x,y,w,h = cv2.boundingRect(mask)
result = ROI[y:y+h,x:x+w]
mask = mask[y:y+h,x:x+w]
result[mask==0] = (255,255,255)
cv2.imwrite("temp/"+image_name+"cropped.png", result)
cv2.waitKey(0)
image = cv2.imread("temp/"+image_name+"cropped.png")
width = 450
height = 450
dim = (width, height)
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
# cv2.imshow("palm",image) #to view the palm in python
# cv2.waitKey(0)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,30,80,apertureSize = 3)
# cv2.imshow("edges in palm",edges)
# cv2.waitKey(0)
edges = cv2.bitwise_not(edges)
# cv2.imshow("edges in palm1",edges)
cv2.imwrite("temp/"+image_name+"lines.png", edges)
cv2.waitKey(0)
TARGET_FILE = "temp/"+image_name+"lines.png"
IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'
IMG_SIZE = (200, 200)
target_img = cv2.imread(TARGET_FILE)
target_img = cv2.resize(target_img, IMG_SIZE)
print('TARGET_FILE: %s' % (TARGET_FILE))
bf = cv2.BFMatcher(cv2.NORM_HAMMING)
detector = cv2.AKAZE_create()
(target_kp, target_des) = detector.detectAndCompute(target_img, None)
hasil_ramalan = None
datas = None
with open('dataset.json') as f:
datas = json.load(f)
pilihan = 2000
image_ramalan = None
files = os.listdir(IMG_DIR)
for file in files:
comparing_img_path = IMG_DIR + file
try:
comparing_img = cv2.imread(comparing_img_path, cv2.IMREAD_GRAYSCALE)
comparing_img = cv2.resize(comparing_img, IMG_SIZE)
(comparing_kp, comparing_des) = detector.detectAndCompute(comparing_img, None)
matches = bf.match(target_des, comparing_des)
dist = [m.distance for m in matches]
ret = sum(dist) / len(dist)
except cv2.error:
ret = 100000
print(file, ret)
if(ret < pilihan):
pilihan =ret
image_ramalan = file
theindex = None
for index,data in enumerate(datas):
if(data["id"] == image_ramalan):
theindex= index
hasil_ramalan = datas[theindex]['datanya']
# if os.path.exists("temp/"):
# os.remove("temp/"+image_name+"lines.png")
# os.remove("temp/"+image_name+"cropped.png")
# os.remove("temp/"+body['image'])
return {"message": hasil_ramalan}