Hello Everyone, I am trying to work with lists and dictionaries together. In the following code I have to access pixels in a segmented image through a dictionary. But the problem is when I am trying to update the list through dict it is giving me this error of tuple, ofcourse because list indices should be integer.
THE CODE IS : import cv def access_segments(segimage, data): print segimage segments = {} for y in xrange(0, segimage.height): for x in xrange(0, segimage.width): if segimage[y,x] == (0.0, 0.0, 0.0): continue else: seg_color = segimage[y,x] blue = int(seg_color[0]) green = int(seg_color[1]) red = int(seg_color[2]) reg_num = blue + 256 * green + 65536 * red point = data[y,x] segments.setdefault(reg_num, [])[point] += point for p in sorted(segments.iterkeys()): points = (segments[p]) print len(points) print points if __name__== "__main__": data = cv.Load(r"C:\Users\inshu\Desktop\Masters Thesis\data\xyz_00000.yml") segimage = cv.LoadImageM(r"C:\Users\inshu\Desktop\Masters Thesis\Segmentation\segmentation_numbers_00000.tif", cv.CV_LOAD_IMAGE_UNCHANGED) access_segments(segimage, data) THE ERROR IS: <cvmat(type=42424010 8UC3 rows=3000 cols=3000 step=9000 )> Traceback (most recent call last): File "C:\Users\inshu\Desktop\test_reading .py", line 27, in <module> access_segments(segimage, data) File "C:\Users\inshu\Desktop\test_reading .py", line 16, in access_segments segments.setdefault(reg_num, [])[point] += point TypeError: list indices must be integers, not tuple How can I access the data without getting this error ? the points have x, y, z co-ordinates. Thanks In Advance for your suggestions.
-- http://mail.python.org/mailman/listinfo/python-list