len(adjusted2) // 15, len(adjusted2) // 20) adjusted2 = adjustRoundList(adjusted2, math.floor(select[1]), math.floor(select[0])) #sz calculates from just select, could hapepn after the adjust round sz = 1 if (select[0] > select[1]): sz = select[0] - select[1] else: sz = len(adjusted2) - select[1] + select[0] #choose a random fragment index2Choose = math.floor((len(frags) * random.random()) // 1) #NOT USED ANYWAYdstr = descrips[index2Choose] frg = frags[index2Choose] relation = functionMisc.relatePoints( adjusted2[len(adjusted2) // 3], frg[0]) transdEdge = functionMisc.rotateEdgeToEdge( adjusted2[len(adjusted2) // 3], adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], frg) transdEdge2 = functionMisc.ratioTransfer( adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], transdEdge) if len(transdEdge2) == 0: fails = fails + 1 continue crossing = functionMisc.ecross( outerContour, transdEdge2) or (functionMisc.ecross( adjusted2[0:math.floor((len(adjusted2) // 3)) - 1:1],
def completeSpline(folderName, testImBig, chosen): numberOfPoints = 0 accPoint0 = 0 accPoint1 = 0 c = np.load("MPEG7dataset\\test\\extractions\\" + folderName + "\\metadata.npy") # just for dimensions im = cv2.imread('MPEG7dataset\\test\\apple\\apple-1.png') height, width, channels = im.shape apples = np.load('MPEG7dataset\\test\\extractions\\apple\\Descriptors.npy') bell = np.load('MPEG7dataset\\test\\extractions\\bell\\Descriptors.npy') bone = np.load('MPEG7dataset\\test\\extractions\\Bone\\Descriptors.npy') car = np.load('MPEG7dataset\\test\\extractions\\car\\Descriptors.npy') carriage = np.load( 'MPEG7dataset\\test\\extractions\\carriage\\Descriptors.npy') cellphone = np.load( 'MPEG7dataset\\test\\extractions\\cellular_phone\\Descriptors.npy') child = np.load( 'MPEG7dataset\\test\\extractions\\children\\Descriptors.npy') chopper = np.load( 'MPEG7dataset\\test\\extractions\\chopper\\Descriptors.npy') face = np.load('MPEG7dataset\\test\\extractions\\face\\Descriptors.npy') flatfish = np.load( 'MPEG7dataset\\test\\extractions\\flatfish\\Descriptors.npy') fountain = np.load( 'MPEG7dataset\\test\\extractions\\fountain\\Descriptors.npy') keys = np.load('MPEG7dataset\\test\\extractions\\key\\Descriptors.npy') shoe = np.load('MPEG7dataset\\test\\extractions\\shoe\\Descriptors.npy') watch = np.load('MPEG7dataset\\test\\extractions\\watch\\Descriptors.npy') flann = FLANN() flann.build_index(testImBig, algorithm="kmeans", branching=32, iterations=7, checks=16) #relavantest stores the fragment indicies with the highest relevance, and their indicies relavantest = [] #looker is the bound on the length of relevantest looker = 80 ImgNo = 0 for imager in c: a = np.split(chosen, c[ImgNo])[1] #num is the index of the descriptor des relative to the lowest index of the image num = 0 for des in a: myResult, myDistance = flann.nn_index(des, 50, algorithm="kmeans", branching=32, iterations=7, checks=16) highestNonCow = len(testImBig) - len(chosen) inspectArray = [] for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test < 0: inspectArray = np.split(myResult[0], [0, myR])[1] break else: pass numNearerfound = 0 if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and (imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 numNearerfound = numNearerfound + 1 myLower = c[ImgNo][0] #tic is our current index in our insertion search of relavantest tic = 0 inserted = False #just an ordered assertion into relavantest for pre in relavantest: if tic > looker: #if weve gone over the length of the thing #just unsyrence fir the deletion part later break if pre[0] < numNearerfound: #insertion at tic relavantest.insert(tic, ([numNearerfound, num + myLower])) inserted = True if len(relavantest) > looker: #to ensure we dont go over our specified length, we delete the last element del relavantest[len(relavantest) - 1] break tic = tic + 1 if inserted == False and len(relavantest) < looker: #initial filling of relecantest relavantest.append(([numNearerfound, num + myLower])) num = num + 1 ImgNo = ImgNo + 1 diffrelMax = 40 diffrel = [] diffdescriptors = [] for desc in relavantest: diffdescriptors.append(chosen[desc[1]]) flann.build_index(np.array(diffdescriptors), algorithm="kmeans", branching=32, iterations=7, checks=16) it = 0 for someDesc in diffdescriptors: myResult, myDistance = flann.nn_index(someDesc, 2, algorithm="kmeans", branching=32, iterations=7, checks=16) nextNear = myDistance[0][1] tic2 = 0 inserted = False #just an ordered assertion into diffrel for pre in diffrel: if tic2 > diffrelMax: #if weve gone over the length of the thing #just unsyrence fir the deletion part later break if pre[0] < nextNear: #insertion at tic diffrel.insert( tic2, ([nextNear, relavantest[it][0], relavantest[it][1]])) inserted = True if len(diffrel) > diffrelMax: #to ensure we dont go over our specified length, we delete the last element del diffrel[len(diffrel) - 1] break tic2 = tic2 + 1 if inserted == False and len(diffrel) < diffrelMax: #initial filling of relecantest diffrel.append(([nextNear, relavantest[it][0], relavantest[it][1]])) it = it + 1 lastAr = [] for thing in diffrel: lastAr.append([thing[1], thing[2]]) relavantest = lastAr pointsToPol = [] cowFrags = np.load('MPEG7dataset\\test\\extractions\\' + folderName + '\\Fragments.npy') for f in cowFrags: for p in f: numberOfPoints = numberOfPoints + 1 accPoint1 = accPoint1 + p[1] accPoint0 = accPoint0 + p[0] for top in relavantest: number = top[1] for x in cowFrags[number]: xval = x[1] yval = x[0] pointsToPol.append(x) #fact = 25 #fish with fewer points #fact = 4.5 #fish with iterations #fact = 10 #fish without iterations #fact = 12 #applespline #fact = 7 #tryWithIT TODO #bellfail fact = 4 #bone #fact = 17.34 #fact = 3.73 #car #fact = 11 #cellphone #fact = 3.5 #fountain #fact = 15.75 #key #shoe fact = 19 pointCenter = [accPoint0 // numberOfPoints, accPoint1 // numberOfPoints] pointRelToCenter = [] acc = 0 acc2 = 0 for p in pointsToPol: acc = acc + 1 if acc % 5 != 0: continue acc2 = acc2 + 1 relation = functionMisc.relatePoints(p, pointCenter) x = relation[1] y = relation[0] pointRelToCenter.append( np.array( [np.sqrt(x**2 + y**2) / fact, np.arctan2(y, x) + math.pi * 2])) pointRelToCenter.append( np.array( [np.sqrt(x**2 + y**2) / fact, np.arctan2(y, x) - math.pi * 2])) pointRelToCenter.append( np.array([np.sqrt(x**2 + y**2) / fact, np.arctan2(y, x)])) polarCollect = np.array(pointRelToCenter) sorted = polarCollect[polarCollect[:, 1].argsort()] stX = sorted[:, 1] stY = sorted[:, 0] s2 = inter.pchip(stX, stY) xs = np.arange(-3.14158 * 2.5, 3.14159 * 2.5, 0.01) xx = np.arange(-3.14158 * 2.5, 3.14159 * 2.5, 0.01) yUnNew = s2(xs) xNext = [] YNext = [] for x in range(0, len(yUnNew)): if x % (len(yUnNew) // 500) == 0: xNext.append(xs[x]) YNext.append(yUnNew[x]) spl3 = inter.UnivariateSpline(xNext, YNext, s=650) xx5 = np.arange(-3.14158 * 2.5, 3.14159 * 2.5, 0.01) yy5 = spl3(xx) plt.plot(xNext, YNext, 'r-', label='pchip fish') plt.plot(xx5, yy5, 'b', label='evened') splineCart = [] valsToUse = np.arange(-(math.pi), math.pi, 0.001) rsToUse = spl3(valsToUse) for ind in range(len(valsToUse)): rho = rsToUse[ind] * fact phi = valsToUse[ind] x = rho * np.cos(phi) y = rho * np.sin(phi) splineCart.append([int(y), int(x)]) for x in splineCart: #outContour: if x[0] + pointCenter[0] > 0 and x[1] + pointCenter[1] > 0 and x[ 0] + pointCenter[0] < 640 and x[1] + pointCenter[1] < 640: xval = x[1] yval = x[0] slipped = [] for x in splineCart: slipped.append([x[0] + pointCenter[0], x[1] + pointCenter[1]]) minW1 = min(np.array(slipped)[:, 1]) minW0 = min(np.array(slipped)[:, 0]) if (minW1 < 0): slipped2 = [] for x in slipped: slipped2.append([x[0], x[1] + abs(minW1) + 5]) slipped = slipped2 if (minW0 < 0): slipped2 = [] for x in slipped: slipped2.append([x[0] + abs(minW0) + 5, x[1]]) slipped = slipped2 final = [] for x in functionMisc.fill(functionMisc.thin(slipped + [slipped[0]])): if x[0] > 0 and x[1] > 0 and x[0] < 640 and x[1] < 640: final.append(x) return final
def petsketch(img): height, width, channels = img.shape #img = cv2.fastNlMeansDenoisingColored(img,None,20,20,7,21) img = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21) edges = cv2.Canny(img, 70, 200) kernel = np.ones((2, 2), np.uint8) dilation = cv2.dilate(edges, kernel, iterations=1) im3, Ocontours, hierarchy = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) c2 = [] forgotten = [] for cont in Ocontours: #print(len(cont)) if len(cont) > 10: c2.append(cont) elif len(cont) > 4: forgotten.append(cont[:len(cont) // 2]) contours = c2 #print(forgotten) # top = [] # bot = [] # left = [] # right = [] # for x in range(0,width): # top.append([x,0]) # bot.append([width-x,height]) # for y in range(0,height): # right.append([width,y]) # left.append([0,height-y]) # outerContour = top + right + bot+ left blank_image = np.zeros((height, width, 3), np.uint8) # im = cv2.imread("ex3.png") # #im = cv2.imread("circle2.png") # height, width, channels = im.shape # imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) # ret,thresh = cv2.threshold(imgray,127,255,0) # height, width, channels = im.shape # im3, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) # blank_image = np.zeros((height,width,3), np.uint8) # # startlistOfPoints = [] # # for ind, x in enumerate(contours[1]): # # xval = x[0][0] # # yval = x[0][1] # # startlistOfPoints.append([yval, xval]) # # listOfPoints= np.array(startlistOfPoints) # #blank_image = np.zeros(((height*4)//2,((width*4)//2),3), np.uint8) outerContour = [] for ind, x in enumerate(contours[0]): xval = x[0][0] yval = x[0][1] outerContour.append([yval, xval]) # for x in outerContour: # xval = x[1] # yval = x[0] # blank_image[yval][xval]=[0,255,255] folderName = "flatfish" frags = testFrags for cont in range(1, len(contours)): # print("onto ",cont," out of ",len(contours),len(contours[cont])) # sys.stdout.flush() startlistOfPoints = [] for ind, x in enumerate(contours[cont]): xval = x[0][0] yval = x[0][1] startlistOfPoints.append([yval, xval]) listOfPoints = np.array(startlistOfPoints) steps = 10 #maxAttempts = 1 adjusted2 = listOfPoints fails = 0 for x in range(0, steps): # selection = [] # distances = [] crossing = True while crossing: if fails > 0: fails = 0 break #historic = adjusted2 if (len(adjusted2) < 10): break elif (len(adjusted2) < 100): select = getRandomSection(len(adjusted2), len(adjusted2) // 3, len(adjusted2) // 6) else: select = getRandomSection(len(adjusted2), len(adjusted2) // 10, len(adjusted2) // 15) adjusted2 = adjustRoundList(adjusted2, math.floor(select[1]), math.floor(select[0])) sz = 1 if (select[0] > select[1]): sz = select[0] - select[1] else: sz = len(adjusted2) - select[1] + select[0] subfrag = adjusted2[math.floor(( len(adjusted2) // 3)):math.floor((len(adjusted2) // 3)) + math.floor(sz):1] subdesc = generateDescriptor(subfrag, height, width) myResult, myDistance = flann.nn_index(subdesc, 5, algorithm="kmeans", branching=32, iterations=7, checks=16) frg = frags[myResult[0][0]] relation = functionMisc.relatePoints( adjusted2[len(adjusted2) // 3], frg[0]) transdEdge = functionMisc.rotateEdgeToEdge( adjusted2[len(adjusted2) // 3], adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], frg) transdEdge2 = functionMisc.ratioTransfer( adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], transdEdge) if len(transdEdge2) == 0: fails = fails + 1 #print("lenfail length of frg ",len(frg), " sz ",sz) #break if fails < 1: #crossing = functionMisc.ecross(outerContour,transdEdge2) or (functionMisc.ecross(adjusted2[0 : math.floor((len(adjusted2)//3))-1 : 1],transdEdge2) or functionMisc.ecross(adjusted2[math.floor((len(adjusted2)//3))+math.floor(sz)+1 : len(adjusted2) : 1], transdEdge2)) #CAUSE WE NO LONGER CARE crossing = functionMisc.ecross(outerContour, transdEdge2) if not crossing: #transdEdge2 #adjusted2[0 : math.floor((len(adjusted2)//3)) : 1] partReplacing = adjusted2[math.floor(( len(adjusted2) // 3)):math.floor((len(adjusted2) // 3)) + math.floor(sz):1] newTransdEdge = [] # maxp = 5 # petx = random.randint(-maxp,maxp) * random.randint(-maxp,maxp) # pety = random.randint(-maxp,maxp) * random.randint(-maxp,maxp) petx = 0 pety = 0 for ind in range(0, len(transdEdge2)): p = transdEdge2[ind] q = partReplacing[(len(partReplacing) * ind) // len(transdEdge2)] newTransdEdge.append([ petx + q[0] - (-p[0] + q[0]) // 1, pety + q[1] - (-p[1] + q[1]) // 1 ]) transdEdge2 = newTransdEdge adjusted2 = np.concatenate( (np.concatenate( (adjusted2[0:math.floor((len(adjusted2) // 3)):1], transdEdge2)), adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz):len(adjusted2):1])) for x in adjusted2: xval = x[1] yval = x[0] blank_image[yval][xval] = [255, 255, 255] #print("fails: ",fails) for line in forgotten: for x in line: yval = x[0][1] xval = x[0][0] blank_image[yval][xval] = [255, 255, 255] # cv2.imshow('Edges',blank_image) # cv2.waitKey(0) # cv2.destroyAllWindows() return blank_image
def complete(): truths = 0 folderName = "flatfish" c = np.load("MPEG7dataset\\test\\extractions\\" + folderName + "\\metadata.npy") # just for dimensions im = cv2.imread('MPEG7dataset\\test\\apple\\apple-1.png') height, width, channels = im.shape blank_image = np.zeros(((height * 5) // 2, ((width * 5) // 2), 3), np.uint8) #finding most relevant in cow using cat as vs apples = np.load('MPEG7dataset\\test\\extractions\\apple\\Descriptors.npy') bell = np.load('MPEG7dataset\\test\\extractions\\bell\\Descriptors.npy') bone = np.load('MPEG7dataset\\test\\extractions\\Bone\\Descriptors.npy') car = np.load('MPEG7dataset\\test\\extractions\\car\\Descriptors.npy') carriage = np.load( 'MPEG7dataset\\test\\extractions\\carriage\\Descriptors.npy') cellphone = np.load( 'MPEG7dataset\\test\\extractions\\cellular_phone\\Descriptors.npy') child = np.load( 'MPEG7dataset\\test\\extractions\\children\\Descriptors.npy') chopper = np.load( 'MPEG7dataset\\test\\extractions\\chopper\\Descriptors.npy') face = np.load('MPEG7dataset\\test\\extractions\\face\\Descriptors.npy') flatfish = np.load( 'MPEG7dataset\\test\\extractions\\flatfish\\Descriptors.npy') fountain = np.load( 'MPEG7dataset\\test\\extractions\\fountain\\Descriptors.npy') keys = np.load('MPEG7dataset\\test\\extractions\\key\\Descriptors.npy') shoe = np.load('MPEG7dataset\\test\\extractions\\shoe\\Descriptors.npy') watch = np.load('MPEG7dataset\\test\\extractions\\watch\\Descriptors.npy') testImBig = np.concatenate([ apples, child, carriage, face, chopper, watch, bell, bone, car, cellphone, fountain, keys, shoe, flatfish ], axis=0) chosen = flatfish flann = FLANN() flann.build_index(testImBig, algorithm="kmeans", branching=32, iterations=7, checks=16) #relavantest stores the fragment indicies with the highest relevance, and their indicies relavantest = [] #looker is the bound on the length of relevantest looker = 30 ImgNo = 0 for imager in c: a = np.split(chosen, c[ImgNo])[1] #num is the index of the descriptor des relative to the lowest index of the image num = 0 for des in a: #print(len(a)) myResult, myDistance = flann.nn_index(des, 50, algorithm="kmeans", branching=32, iterations=7, checks=16) highestNonCow = len(testImBig) - len(chosen) inspectArray = [] for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test < 0: inspectArray = np.split(myResult[0], [0, myR])[1] break else: pass numNearerfound = 0 if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and (imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 numNearerfound = numNearerfound + 1 myLower = c[ImgNo][0] tic = 0 inserted = False #just an ordered assertion into relavantest for pre in relavantest: if tic > looker: #if weve gone over the length of the thing #just unsyrence fir the deletion part later break if pre[0] < numNearerfound: #insertion at tic relavantest.insert(tic, ([numNearerfound, num + myLower])) inserted = True if len(relavantest) > looker: #to ensure we dont go over our specified length, we delete the last element del relavantest[len(relavantest) - 1] break tic = tic + 1 if inserted == False and len(relavantest) < looker: #initial filling of relecantest relavantest.append(([numNearerfound, num + myLower])) num = num + 1 ImgNo = ImgNo + 1 fragList = [] cowFrags = np.load('MPEG7dataset\\test\\extractions\\' + folderName + '\\Fragments.npy') for top in relavantest: number = top[1] fragList.append(cowFrags[number]) #phase 2=============================================================================================================================================================================== #================================================================================================================= #================================================================================================================= fullShape = AllRelGet() im = cv2.imread("exampleImage.png") height, width, channels = im.shape flann.build_index(testImBig, algorithm="kmeans", branching=32, iterations=7, checks=16) imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(imgray, 127, 255, 0) height, width, channels = im.shape im3, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) blank_image = np.zeros((height, width, 3), np.uint8) c = np.load("MPEG7dataset\\test\\extractions\\" + folderName + "\\metadata.npy") outerContour = [] for ind, x in enumerate(contours[0]): xval = x[0][0] yval = x[0][1] outerContour.append([yval, xval]) for x in outerContour: xval = x[1] yval = x[0] blank_image[yval][xval] = [0, 255, 255] frags = fragList listOfPoints = fullShape steps = 0 maxAttempts = 5 adjusted2 = listOfPoints fails = 0 for x in range(0, steps): selection = [] distances = [] print("\n") for x in range(0, maxAttempts): crossing = True while crossing: if fails > 8: fails = 0 break historic = adjusted2 select = getRandomSection(len(adjusted2), len(adjusted2) // 12, len(adjusted2) // 20) adjusted2 = adjustRoundList(adjusted2, math.floor(select[1]), math.floor(select[0])) adjustedRot = adjusted2 #sz calculates from just select, could hapepn after the adjust round sz = 1 if (select[0] > select[1]): sz = select[0] - select[1] else: sz = len(adjusted2) - select[1] + select[0] #choose a random fragment index2Choose = math.floor((len(frags) * random.random()) // 1) frg = frags[index2Choose] relation = functionMisc.relatePoints( adjusted2[len(adjusted2) // 3], frg[0]) transdEdge = functionMisc.rotateEdgeToEdge( adjusted2[len(adjusted2) // 3], adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], frg) transdEdge2 = functionMisc.ratioTransfer( adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz)], transdEdge) if len(transdEdge2) == 0: fails = fails + 1 continue crossing = functionMisc.ecross( outerContour, transdEdge2) or (functionMisc.ecross( adjusted2[0:math.floor((len(adjusted2) // 3)) - 1:1], transdEdge2) or functionMisc.ecross( adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz) + 1:len(adjusted2):1], transdEdge2)) if not crossing: adjusted2 = np.concatenate( (np.concatenate( (adjusted2[0:math.floor((len(adjusted2) // 3)):1], transdEdge2)), adjusted2[math.floor((len(adjusted2) // 3)) + math.floor(sz):len(adjusted2):1])) targetLength = len(frg) rtdd = functionMisc.createDescriptorSet( adjusted2, height, width, targetLength, 2.2) totalSum = 0 for descr in rtdd: #======= replaced with full descriptor # myResult, myDistance = flann.nn_index(descr, 5, algorithm="kmeans", branching=32, iterations=7, checks=16) # intersum = 0 # for indist in myDistance[0]: # intersum = intersum + indist # totalSum = totalSum + intersum #============ #full relevance \/\/\/ #============= myResult, myDistance = flann.nn_index( descr, 50, algorithm="kmeans", branching=32, iterations=7, checks=16) highestNonCow = len(testImBig) - len(chosen) #the place in our index of the last noncow, the remainder of the index is cows //^^^ inspectArray = [] for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test < 0: inspectArray = np.split(myResult[0], [0, myR])[1] break else: pass numNearerfound = 0 if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and ( imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 print("!") numNearerfound = numNearerfound + 1 if numNearerfound == 0: for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test > 0: inspectArray = np.split( myResult[0], [0, myR])[1] break else: pass if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and ( imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 #print("!") numNearerfound = numNearerfound - 1 totalSum = totalSum - numNearerfound #============== selection.append(adjusted2) rtdd = functionMisc.createDescriptorSet( adjustedRot, height, width, targetLength, 2.2) totalSumOld = 0 for descr in rtdd: myResult, myDistance = flann.nn_index( descr, 50, algorithm="kmeans", branching=32, iterations=7, checks=16) highestNonCow = len(testImBig) - len(chosen) inspectArray = [] for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test < 0: inspectArray = np.split(myResult[0], [0, myR])[1] break else: pass numNearerfound = 0 if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and ( imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 numNearerfound = numNearerfound + 1 if numNearerfound == 0: for myR in range(len(myResult[0])): test = myResult[0][myR] - highestNonCow if test > 0: inspectArray = np.split( myResult[0], [0, myR])[1] break else: pass if len(inspectArray) > 1: dict = {'init': 'fake'} for cand in inspectArray: imgPlace = cand - (highestNonCow + 1) imgID = 0 for imageBound in c: if (imageBound[1] > imgPlace) and ( imageBound[0] < imgPlace): imgID = imageBound[0] break if imgID in dict: pass else: dict[imgID] = 1 #print("!") numNearerfound = numNearerfound - 1 totalSumOld = totalSumOld - numNearerfound adjusted2 = historic print('NewNearer:', -totalSum, " OldNearer:", -totalSumOld) distances = distances + [totalSum - totalSumOld] indexI = 0 best = distances[0] for distInd in range(0, len(distances)): if (distances[distInd] < best): indexI = distInd best = distances[distInd] if (best < 0): adjusted2 = selection[indexI] print("tic") print("fails: ", fails) #================================================================ for x in fullShape: xval = x[1] yval = x[0] blank_image[yval][xval] = [255, 0, 0] for x in adjusted2: xval = x[1] yval = x[0] blank_image[yval][xval] = [255, 255, 255] cv2.imshow('Edges', blank_image) print("ok finish") print("truth", truths) plt.minorticks_on() plt.legend() plt.xlabel('x') plt.ylabel('y') plt.show() cv2.waitKey(0) cv2.destroyAllWindows()