my purpose is to cut the original img in sticker size, and recognize img to text, find if is duplicate or print wrong
for now I can save img's name as their (x,y) in original pic, such as "output_x:465_y:159.png"
- I can sort sort (x,y) in list
xy_list = []
tem_list_x_and_y = [ ]
if (x != 0) and (y != 0):
# I saved sticker/croped image by their (x,y) on original big image
cv2.imwrite(f"/home/student_joy/desktop/test_11_8/output01_test11_9/output_x:{x}_y:{y}.png", roi)
tem_list_x_and_y.append(x)
tem_list_x_and_y.append(y)
xy_list.append(tem_list_x_and_y)
# save all sticker/croped image's (x,y) , and sort y first , then sort x
print("len is : " ,len(xy_list))
print(sorted(xy_list , key=lambda k: [k[1], k[0]]))
- that the output is
[[45, 47], [150, 47], [255, 47], [360, 47], [465, 47], [570, 47], [45, 159], [150, 159], [255, 159], [360, 159], [465, 159], [570, 159], [45, 273], [150, 273], [255, 273], [360, 273], [465, 273], [570, 273], [45, 389], [150, 389], [255, 389], [360, 389], [465, 389], [570, 389], [45, 504], [150, 504], [255, 504], [360, 504], [465, 504], [570, 504]]
Question:
- How can I sort following list by (x,y) value like last one? format:
"output_x:{x}_y:{y}.png"
['output_y:47_x:150.png.png', 'output_y:389_x:360.png.png', 'output_y:159_x:465.png.png', 'output_y:504_x:45.png.png', 'output_y:389_x:570.png.png', 'output_y:504_x:570.png.png', 'output_y:273_x:255.png.png', 'output_y:504_x:150.png.png', 'output_y:389_x:45.png.png', 'output_y:504_x:360.png.png', 'output_y:159_x:150.png.png', 'output_y:273_x:150.png.png', 'output_y:504_x:255.png.png', 'output_y:273_x:465.png.png', 'output_y:159_x:255.png.png', 'output_y:389_x:255.png.png', 'output_y:273_x:45.png.png', 'output_y:504_x:465.png.png', 'output_y:389_x:465.png.png', 'output_y:47_x:465.png.png', 'output_y:273_x:360.png.png', 'output_y:47_x:45.png.png', 'output_y:47_x:255.png.png', 'output_y:159_x:360.png.png', 'output_y:273_x:570.png.png', 'output_y:47_x:570.png.png', 'output_y:159_x:570.png.png', 'output_y:47_x:360.png.png', 'output_y:159_x:45.png.png']
- tried code:
list =['output_y:47_x:150.png.png', 'output_y:389_x:360.png.png', 'output_y:159_x:465.png.png', 'output_y:504_x:45.png.png', 'output_y:389_x:570.png.png', 'output_y:504_x:570.png.png', 'output_y:273_x:255.png.png', 'output_y:504_x:150.png.png', 'output_y:389_x:45.png.png', 'output_y:504_x:360.png.png', 'output_y:159_x:150.png.png', 'output_y:273_x:150.png.png', 'output_y:504_x:255.png.png', 'output_y:273_x:465.png.png', 'output_y:159_x:255.png.png', 'output_y:389_x:255.png.png', 'output_y:273_x:45.png.png', 'output_y:504_x:465.png.png', 'output_y:389_x:465.png.png', 'output_y:47_x:465.png.png', 'output_y:273_x:360.png.png', 'output_y:47_x:45.png.png', 'output_y:47_x:255.png.png', 'output_y:159_x:360.png.png', 'output_y:273_x:570.png.png', 'output_y:47_x:570.png.png', 'output_y:159_x:570.png.png', 'output_y:47_x:360.png.png', 'output_y:159_x:45.png.png']
arr = []
for i in list:
arr.append('output_y:' str(i[1]) '_x:' str(i[0]) '.png')
print(arr)
- output:
['output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png', 'output_y:u_x:o.png']
CodePudding user response:
list = [[45, 47], [150, 47], [255, 47], [360, 47], [465, 47], [570, 47], [45, 159], [150, 159], [255, 159], [360, 159], [465, 159], [570, 159], [45, 273], [150, 273], [255, 273], [360, 273], [465, 273], [570, 273], [45, 389], [150, 389], [255, 389], [360, 389], [465, 389], [570, 389], [45, 504], [150, 504], [255, 504], [360, 504], [465, 504], [570, 504]]
arr = []
for i in list:
arr.append('output_y:' str(i[1]) '_x:' str(i[0]) '.png')
print(arr)
result (order differs - that's what you mean?):
['output_y:47_x:45.png', 'output_y:47_x:150.png', 'output_y:47_x:255.png', 'output_y:47_x:360.png', 'output_y:47_x:465.png', 'output_y:47_x:570.png', 'output_y:159_x:45.png', 'output_y:159_x:150.png', 'output_y:159_x:255.png', 'output_y:159_x:360.png', 'output_y:159_x:465.png', 'output_y:159_x:570.png', 'output_y:273_x:45.png', 'output_y:273_x:150.png', 'output_y:273_x:255.png', 'output_y:273_x:360.png', 'output_y:273_x:465.png', 'output_y:273_x:570.png', 'output_y:389_x:45.png', 'output_y:389_x:150.png', 'output_y:389_x:255.png', 'output_y:389_x:360.png', 'output_y:389_x:465.png', 'output_y:389_x:570.png', 'output_y:504_x:45.png', 'output_y:504_x:150.png', 'output_y:504_x:255.png', 'output_y:504_x:360.png', 'output_y:504_x:465.png', 'output_y:504_x:570.png']