Как мне обрезать все места изображения через массив точек np. в Python?
Я настраиваю цикл for для обрезки различных частей изображения из моего np.array из 22. Как правильно настроить цикл for, чтобы он работал быстро?
Я знаю, что мне нужен пустой массив для посева.
crop_array = np.empty([])
#test with y1,y2,x1,x2 points
rect = np.array([[137,166,14,80],[174,204,14,80],[214,244,14,80],
[252,282,14,80],[290,320,14,80],[328,358,14,80],[366,396,14,80],
[402,432,14,80],[65,94,161,227],[102,131,199,265],[139,168,234,300],
[179,208,270,336],[217,246,306,372],[254,283,344,410],[293,322,381,447],
[65,94,235,301],[102,131,273,339],[139,168,308,374],[179,208,344,410],
[217,246,380,446],[254,283,418,478]])
#this is one point and works
crop0 = small2gray[137:166,14:80].copy()
1 ответ
Учитывая np.array, данный для rect.
#y1,y2,x1,x2 points within each list
rect = np.array([[137,166,14,80],[174,204,14,80],[214,244,14,80],
[252,282,14,80],[290,320,14,80],[328,358,14,80],[366,396,14,80],
[402,432,14,80],[65,94,161,227],[102,131,199,265],[139,168,234,300],
[179,208,270,336],[217,246,306,372],[254,283,344,410],[293,322,381,447],
[65,94,235,301],[102,131,273,339],[139,168,308,374],[179,208,344,410],
[217,246,380,446],[254,283,418,478]])
#For loop to contents of list that are nested
for (a,b,c,d) in rect:
#Crop ROI Location
crop_empty = smallgray[a:b,c:d].copy()
crop = small2gray[a:b,c:d].copy
Сайт, объясняющий вложенные списки. https://cognitiveclass.ai/blog/nested-lists-multidimensional-numpy-arrays/
Вот видео объяснения. https://www.youtube.com/watch?v=rUDdguWk-QQ