i'm taking the image from the user, and displaying it using label. Now i have to use that image for further processing.
my code is:

from Tkinter import Tk, Frame, BOTH
from Tkinter import *
import cv2
from collections import *
from CBIR import *
from experiment import *
from scipy.spatial import distance
import Tkinter,tkFileDialog
from PIL import Image, ImageTk

class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)            
        self.parent = parent        
        self.initUI()

    def initUI(self):

        self.parent.title("PISE")
        self.pack(fill=BOTH, expand=1)

def query():
    path=tkFileDialog.askopenfilename(filetypes=[("Image File",'.jpg')])
    im = Image.open(path)
    tkimage = ImageTk.PhotoImage(im)

    myvar=Label(root,image = tkimage)
    myvar.image = tkimage
    myvar.pack()
    myvar.place(x = 850, y = 5)
    custName.set(path)
    cont_list1 = list()
    ene_list1 = list()
    homo_list1 = list()
    cor_list1 = list()
    B_mean1 = list()
    G_mean1 = list()
    R_mean1 = list()
    graylist1 = list()
    resizelist1 = list()
    eq_graylist1 = list()
    dis_list1 = list()

    imge = cv2.imread(tkimage)
    arr = array(imge)
    g_img = cv2.imread(tkimage,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(tkimage, 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)

root = Tk()
root.geometry("1105x605+300+300")
app = Example(root)
custName = StringVar(None)
yourName = Entry(app, textvariable=custName)
yourName.focus_set()
yourName.pack(padx = 20, pady = 20,anchor='n')
yourName.place(y = 25, x = 100, width = 500, height = 25)

button1 = Button(app, text='Select the Query Image',command = query)
button1.pack(padx = 2, pady = 2,anchor='ne')
button1.place( x = 550, y = 25)

root.mainloop()  

but its giving me an error like:

imge = cv2.imread(tkimage)
TypeError: expected string or Unicode object, instance found

how to overcome this error??

thanks for your support!

Recommended Answers

All 2 Replies

Read the doc ! Apparently cv2.imread() expects a filename.

Maybe this will help ...

# pick images you have in the working directory
# or give full path
image1 = tk.PhotoImage(file='Farm.gif')

# create a label to display the image
label = tk.Label(root, image=image1, relief='raised', bd=10)
label.grid(row=1, column=1)

# save label image from garbage collection!
label.image = image1
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.