Если бы в названиях была бы сохранена разрядность, то есть слева дописаны нули, то можно было бы отсортировать сразу по названиям. Но тут надо извлекать цифры с помощью регекспа, делать дополнительный отсортированный список или словарь и проходить уже по нему. Шаблон регекспа для имён типа файл1, файл20, файл200. Если в полном пути файла, если его создаёт glob.glob(...), могут также цифры встречаться, надо шаблон другой делать.
import re
l=['frame1.jpg','frame2.jpg','frame3.jpg','frame13.jpg','frame100.jpg','frame101.jpg','frame200.jpg']
#l = glob.glob('result/*.png'):
r='(\d{1,3})'
out={int(re.search(r,x).group(0)):x for x in l}
for number in sorted(out.keys()):
filename=out[number]
img = cv2.imread(filename)
height, width, layers = img.shape
size = (width,height)
img_array.append(img)