首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环-它停止工作

循环-它停止工作
EN

Stack Overflow用户
提问于 2015-09-11 21:13:51
回答 2查看 29关注 0票数 0

这就是我的问题:

我正在使用OpenCV对一系列图像进行图像匹配。有195张图片,所以我需要先读第二张,匹配它们,读第二张和第三张,匹配第三张和第四张,等等。我列出了这些照片的列表,然后做了一个循环,在读取文件后从列表中删除第一个元素,匹配照片,然后再次:)所以它可以工作……但不是到最后。它显示了列表中还剩下多少个元素,似乎循环在97个元素之后就停止了。

你知道为什么吗?

下面是代码(没有匹配)

代码语言:javascript
复制
list_zdj=os.listdir('seq_06_AGH')
print len(list_zdj)

for element in list_zdj:
    img1=cv2.imread(list_zdj[0],0)
    list_zdj.pop(0)
    img2=cv2.imread(list_zdj[0],0)
    print len(list_zdj)

    #detecting,matching

print 'the end'

我不认为匹配有问题,因为我注释掉了所有的匹配,它的工作方式是一样的。

如果需要,list_zdj如下:

代码语言:javascript
复制
['DSC_0216.JPG', 'DSC_0217.JPG', 'DSC_0218.JPG', 'DSC_0219.JPG', 'DSC_0220.JPG', 'DSC_0221.JPG', 'DSC_0222.JPG', 'DSC_0223.JPG', 'DSC_0224.JPG', 'DSC_0225.JPG', 'DSC_0226.JPG', 'DSC_0227.JPG', 'DSC_0228.JPG', 'DSC_0229.JPG', 'DSC_0230.JPG', 'DSC_0231.JPG', 'DSC_0232.JPG', 'DSC_0233.JPG', 'DSC_0234.JPG', 'DSC_0235.JPG', 'DSC_0236.JPG', 'DSC_0237.JPG', 'DSC_0238.JPG', 'DSC_0239.JPG', 'DSC_0240.JPG', 'DSC_0241.JPG', 'DSC_0242.JPG', 'DSC_0243.JPG', 'DSC_0244.JPG', 'DSC_0245.JPG', 'DSC_0246.JPG', 'DSC_0247.JPG', 'DSC_0248.JPG', 'DSC_0249.JPG', 'DSC_0250.JPG', 'DSC_0251.JPG', 'DSC_0252.JPG', 'DSC_0253.JPG', 'DSC_0254.JPG', 'DSC_0255.JPG', 'DSC_0256.JPG', 'DSC_0257.JPG', 'DSC_0258.JPG', 'DSC_0259.JPG', 'DSC_0260.JPG', 'DSC_0261.JPG', 'DSC_0262.JPG', 'DSC_0263.JPG', 'DSC_0264.JPG', 'DSC_0265.JPG', 'DSC_0266.JPG', 'DSC_0267.JPG', 'DSC_0268.JPG', 'DSC_0269.JPG', 'DSC_0270.JPG', 'DSC_0271.JPG', 'DSC_0272.JPG', 'DSC_0273.JPG', 'DSC_0274.JPG', 'DSC_0275.JPG', 'DSC_0276.JPG', 'DSC_0277.JPG', 'DSC_0278.JPG', 'DSC_0279.JPG', 'DSC_0280.JPG', 'DSC_0281.JPG', 'DSC_0282.JPG', 'DSC_0283.JPG', 'DSC_0284.JPG', 'DSC_0285.JPG', 'DSC_0286.JPG', 'DSC_0287.JPG', 'DSC_0288.JPG', 'DSC_0289.JPG', 'DSC_0290.JPG', 'DSC_0291.JPG', 'DSC_0292.JPG', 'DSC_0293.JPG', 'DSC_0294.JPG', 'DSC_0295.JPG', 'DSC_0296.JPG', 'DSC_0297.JPG', 'DSC_0298.JPG', 'DSC_0299.JPG', 'DSC_0300.JPG', 'DSC_0301.JPG', 'DSC_0302.JPG', 'DSC_0303.JPG', 'DSC_0304.JPG', 'DSC_0305.JPG', 'DSC_0306.JPG', 'DSC_0307.JPG', 'DSC_0308.JPG', 'DSC_0309.JPG', 'DSC_0310.JPG', 'DSC_0311.JPG', 'DSC_0312.JPG', 'DSC_0313.JPG', 'DSC_0314.JPG', 'DSC_0315.JPG', 'DSC_0316.JPG', 'DSC_0317.JPG', 'DSC_0318.JPG', 'DSC_0319.JPG', 'DSC_0320.JPG', 'DSC_0321.JPG', 'DSC_0322.JPG', 'DSC_0323.JPG', 'DSC_0324.JPG', 'DSC_0325.JPG', 'DSC_0326.JPG', 'DSC_0327.JPG', 'DSC_0328.JPG', 'DSC_0329.JPG', 'DSC_0330.JPG', 'DSC_0331.JPG', 'DSC_0332.JPG', 'DSC_0333.JPG', 'DSC_0334.JPG', 'DSC_0335.JPG', 'DSC_0336.JPG', 'DSC_0337.JPG', 'DSC_0338.JPG', 'DSC_0339.JPG', 'DSC_0340.JPG', 'DSC_0341.JPG', 'DSC_0342.JPG', 'DSC_0343.JPG', 'DSC_0344.JPG', 'DSC_0345.JPG', 'DSC_0346.JPG', 'DSC_0347.JPG', 'DSC_0348.JPG', 'DSC_0349.JPG', 'DSC_0350.JPG', 'DSC_0351.JPG', 'DSC_0352.JPG', 'DSC_0353.JPG', 'DSC_0354.JPG', 'DSC_0355.JPG', 'DSC_0356.JPG', 'DSC_0357.JPG', 'DSC_0358.JPG', 'DSC_0359.JPG', 'DSC_0360.JPG', 'DSC_0361.JPG', 'DSC_0362.JPG', 'DSC_0363.JPG', 'DSC_0364.JPG', 'DSC_0365.JPG', 'DSC_0366.JPG', 'DSC_0367.JPG', 'DSC_0368.JPG', 'DSC_0369.JPG', 'DSC_0370.JPG', 'DSC_0371.JPG', 'DSC_0372.JPG', 'DSC_0373.JPG', 'DSC_0374.JPG', 'DSC_0375.JPG', 'DSC_0376.JPG', 'DSC_0377.JPG', 'DSC_0378.JPG', 'DSC_0379.JPG', 'DSC_0380.JPG', 'DSC_0381.JPG', 'DSC_0382.JPG', 'DSC_0383.JPG', 'DSC_0384.JPG', 'DSC_0385.JPG', 'DSC_0386.JPG', 'DSC_0387.JPG', 'DSC_0388.JPG', 'DSC_0389.JPG', 'DSC_0390.JPG', 'DSC_0391.JPG', 'DSC_0392.JPG', 'DSC_0393.JPG', 'DSC_0394.JPG', 'DSC_0395.JPG', 'DSC_0396.JPG', 'DSC_0397.JPG', 'DSC_0398.JPG', 'DSC_0399.JPG', 'DSC_0400.JPG', 'DSC_0401.JPG', 'DSC_0402.JPG', 'DSC_0403.JPG', 'DSC_0404.JPG', 'DSC_0405.JPG', 'DSC_0406.JPG', 'DSC_0407.JPG', 'DSC_0408.JPG', 'DSC_0409.JPG', 'DSC_0410.JPG']
EN

回答 2

Stack Overflow用户

发布于 2015-09-11 21:16:59

循环提前结束,因为您正在修改循环中的列表。不要从你正在迭代的列表中弹出值。

要查看如何一次遍历列表的两个元素,请参见Iterating over every two elements in a list和/或Iterate a list as pair (current, next) in Python

票数 0
EN

Stack Overflow用户

发布于 2015-09-15 18:20:53

列表的pop有问题。使用此方法可以匹配您所需的格式。

代码语言:javascript
复制
for i in list_zdj:
    if i != list_zdj[-1:][0]:
        a = cv2.imread(i,0)
        b = cv2.imread(list_zdj[list_zdj.index(i)+1],0)
        print a,b
        #matching a and b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32524405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档