2016-06-14 2 views
1

저는 파이썬에 익숙하지 않습니다. 여기에있는 내용을 루프로 변환하는 방법을 알아 내려고 정말 어려움을 겪고 있습니다. 여기서 볼 수 있듯이 나는 3 개의 다른 이미지 (mask_0001.png에서 mask_0003.png까지)로 스케일링하는 기본 이미지를 만들고 있지만 나중에 100 개가 넘을 것이므로 루프에서해야 할 것입니다. 추측. (에서 0150.png하는 0004.png)python을 사용하여 루프에서 이미지 크기 조정 OpenCV

다음

난 그냥 쓴 코드는 다음과 같습니다

import cv2 
import numpy as np 

img = cv2.imread("C://Users//user//Desktop//research//images//Mask//set1//set1_mask_0001.png") 
res = cv2.resize(img,None,fx=0.5, fy=0.5, interpolation = cv2.INTER_CUBIC) 
cv2.imwrite('0.25_mask_set1_0001.png', res) 


img = cv2.imread("C://Users//user//Desktop//research//images//Mask//set1//set1_mask_0002.png") 
res = cv2.resize(img,None,fx=0.5, fy=0.5, interpolation = cv2.INTER_CUBIC) 
cv2.imwrite('0.25_mask_set1_0002.png', res) 


img = cv2.imread("C://Users//user//Desktop//research//images//Mask//set1//set1_mask_0003.png") 
res = cv2.resize(img,None,fx=0.5, fy=0.5, interpolation = cv2.INTER_CUBIC) 
cv2.imwrite('0.25_mask_set1_0003.png', res) 

감사합니다!

답변

0

이 값은 i으로 설정하여 i을 1에서 150까지 반복합니다.

파이썬 2

for i in range(1,151): 
    img = cv2.imread("C://Users//user//Desktop//research//images//Mask//set1//set1_mask_" + str(i).zfill(4) +".png") 
    res = cv2.resize(img,None,fx=0.5, fy=0.5, interpolation = cv2.INTER_CUBIC) 
    cv2.imwrite('0.25_mask_set1_' + str(i).zfill(4) + '.png', res) 

파이썬 3

대신 str(i).zfill(4)를 사용하는이 함께 작동하는지 확인하는 것이 특히 cv2.imwrite에서 i 내 사용하여, 당신은 행동을 확인해야합니다 format(i, '04d')

시도 당신의 문제

+1

고맙습니다! 하지만 질문이 있습니다. 코드에 따르면 10 번째 이미지가 00010.png이 될 것이지만 올바른 경로는 0010이어야합니다. 아직 제대로 작동하지 않을지 확실하지 않습니다. –

+0

훌륭한 점은 zfill을 사용하여 수정 된 솔루션을 확인하십시오. – nbryans

+0

안녕하세요 thx bro 그것은 완벽하게 작동합니다! –