I have two functions declared in my program, and i want to use the variables in another function to display the matched images. My code is:
def messageWindow():
win = Toplevel()
path = 'C:\Users\HP\Desktop\dataset'
COLUMNS = 12
image_count = 0
for infile in glob.glob(os.path.join(path, '*.jpg')):
image_count += 1
r, c = divmod(image_count, COLUMNS)
im = Image.open(infile)
resized = im.resize((100, 100), Image.ANTIALIAS)
tkimage = ImageTk.PhotoImage(resized)
myvar = Label(win, image=tkimage)
myvar.image = tkimage
myvar.grid(row=r, column=c)
i=0
cont_list = list()
ene_list = list()
homo_list = list()
cor_list = list()
dis_list = list()
B_mean = list()
G_mean = list()
R_mean = list()
piclist = list()
graylist = list()
resizelist = list()
eq_graylist = list()
for infile in glob.glob(os.path.join(path,'*.jpg')):
imge = cv2.imread(infile)
arr = array(imge)
piclist.append(imge)
g_img = cv2.imread(infile,0)
gray_re_img = cv2.resize(g_img,(256,256))
graylist.append(gray_re_img)
equ = cv2.equalizeHist(gray_re_img)
eq_graylist.append(equ)
re_img = cv2.resize(imge,(256,256))
resizelist.append(imge)
i = i + 1
for infiles in glob.glob(os.path.join(path,'*.jpg')):
img = cv2.imread(infiles)
blue, green, red = cv2.split(img)
total = img.size
B = sum(blue) / total
G = sum(green) / total
R = sum(red) / total
B_mean.append(B)
G_mean.append(G)
R_mean.append(R)
im = skimage.io.imread(infile, as_grey=True)
im = skimage.img_as_ubyte(im)
im /= 32
g = skimage.feature.greycomatrix(im, [1], [0], levels=8, symmetric=False, normed=True)
cont = skimage.feature.greycoprops(g, 'contrast')[0][0]
cont_list.append(cont)
ene = skimage.feature.greycoprops(g, 'energy')[0][0]
ene_list.append(ene)
homo = skimage.feature.greycoprops(g, 'homogeneity')[0][0]
homo_list.append(homo)
cor = skimage.feature.greycoprops(g, 'correlation')[0][0]
cor_list.append(cor)
dis = skimage.feature.greycoprops(g, 'dissimilarity')[0][0]
dis_list.append(dis)
feature_matrix_db = zip( B_mean , G_mean , R_mean, cont_list , ene_list , homo_list , cor_list, dis_list)
blue2.set(B_mean)
green2.set(G_mean)
red2.set(R_mean)
con2.set(cont_list)
ene2.set(ene_list)
homo2.set(homo_list)
corr2.set(cor_list)
diss2.set(dis_list)
return(feature_matrix_db,resizelist)
def OPEN():
path=tkFileDialog.askopenfilename(filetypes=[("Image File",'.jpg')])
custName.set(path)
im = Image.open(path)
resized = im.resize((200, 200),Image.ANTIALIAS)
tkimage = ImageTk.PhotoImage(resized)
myvar=Label(root,image = tkimage)
myvar.image = tkimage
myvar.pack()
myvar.place(x = 30, y = 100)
graylist1 = list()
resizelist1 = list()
eq_graylist1 = list()
cont_list1 = list()
ene_list1 = list()
homo_list1 = list()
cor_list1 = list()
B_mean1 = list()
G_mean1 = list()
R_mean1 = list()
dis_list1 = list()
imge = cv2.imread(path)
arr = array(imge)
g_img = cv2.imread(path,0)
gray_re_img = cv2.resize(g_img,(256,256))
graylist1.append(gray_re_img)
equ = cv2.equalizeHist(gray_re_img)
eq_graylist1.append(equ)
re_img = cv2.resize(imge,(256,256))
resizelist1.append(re_img)
blue, green, red = cv2.split(re_img)
total = re_img.size
B = sum(blue) / total
G = sum(green) / total
R = sum(red) / total
B_mean1.append(B)
G_mean1.append(G)
R_mean1.append(R)
im = skimage.io.imread(path, as_grey=True)
im = skimage.img_as_ubyte(im)
im /= 32
g = skimage.feature.greycomatrix(im, [1], [0], levels=8, symmetric=False, normed=True)
cont = skimage.feature.greycoprops(g, 'contrast')[0][0]
cont_list1.append(cont)
ene = skimage.feature.greycoprops(g, 'energy')[0][0]
ene_list1.append(ene)
homo = skimage.feature.greycoprops(g, 'homogeneity')[0][0]
homo_list1.append(homo)
cor = skimage.feature.greycoprops(g, 'correlation')[0][0]
cor_list1.append(cor)
dis = skimage.feature.greycoprops(g, 'dissimilarity')[0][0]
dis_list1.append(dis)
feature_matrix_ip = zip( B_mean1 , G_mean1 , R_mean1, cont_list1 , ene_list1 , homo_list1 , cor_list1 , dis_list1)
blue1.set(B_mean1)
green1.set(G_mean1)
red1.set(R_mean1)
con1.set(cont_list1)
ene1.set(ene_list1)
homo1.set(homo_list1)
corr1.set(cor_list1)
diss1.set(dis_list1)
return(feature_matrix_ip)
def result():
COLUMNS = 12
image_count = 0
resultlist_key = []
result_list = list()
i = 0
a_list = list()
b_list = list()
a_list.append(feature_matrix_ip)
while i < 70:
b_list.append(feature_matrix_db[i])
dist = distance.euclidean(a_list,b_list[i])
result_list.append(dist)
resultlist_key = OrderedDict(sorted(enumerate(result_list),key=lambda x: x[0])).keys()
i = i + 1
res_lst_srt = {'values': result_list,'keys':resultlist_key}
res_lst_srt['values'], res_lst_srt['keys'] = zip(*sorted(zip(res_lst_srt['values'], res_lst_srt['keys'])))
key = res_lst_srt['keys']
for i1,val in enumerate(key):
if i1 < 4:
image_count += 1
r, c = divmod(image_count, COLUMNS)
img = cv2.imread(resizelist[val])
im = Image.open(img)
tkimage = ImageTk.PhotoImage(im)
myvar1 = Label(win, image=tkimage)
myvar1.image = tkimage
myvar1.grid(row=r, column=c)
I want to use the variables from messageWindow() and OPEN() into result(), when i tried this out, then i get this error:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.3.1262.win-x86\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "D:\6th sem\Major project\Code\frame.py", line 198, in result
im = Image.open(resizelist[val])
File "E:\Canopy\System\lib\site-packages\PIL\Image.py", line 1956, in open
prefix = fp.read(16)
AttributeError: 'numpy.ndarray' object has no attribute 'read'
So, can any one help me to solve this problem?
Thanks in advance!