Python
-
Pytorch로 학습을 하다가 OSError: Truncated File Read 라는 에러를 마주했다. 이 에러는 Pillow로 손상된 이미지를 읽었을 때 발생한다. 아마 현재 코드가 pillow를 쓰고 있을 것이다. 데이터가 너무 많아서 뭐가 문제인지 몰라 이미지를 하나하나 다 읽어봐야 했다. 데이터가 몇십, 몇백만장 된다면 ray나 multiprocessing을 추천한다. 이미지를 다 읽어보고 이상한 데이터를 찾아내 이미지를 열어보니 아래와 같이 손상이 된 이미지였다. 역시 무작정 데이터셋을 신뢰하는건 나의 삽질에 큰 도움이 된다. 아래 함수를 잘 적용하면 손상된 이미지를 찾는데에 도움이 될 것이다. 이미지 경로를 glob으로 죄다 긁어서 함수에 넣어주면 된다. def truncated..
OSError: Truncated File ReadPytorch로 학습을 하다가 OSError: Truncated File Read 라는 에러를 마주했다. 이 에러는 Pillow로 손상된 이미지를 읽었을 때 발생한다. 아마 현재 코드가 pillow를 쓰고 있을 것이다. 데이터가 너무 많아서 뭐가 문제인지 몰라 이미지를 하나하나 다 읽어봐야 했다. 데이터가 몇십, 몇백만장 된다면 ray나 multiprocessing을 추천한다. 이미지를 다 읽어보고 이상한 데이터를 찾아내 이미지를 열어보니 아래와 같이 손상이 된 이미지였다. 역시 무작정 데이터셋을 신뢰하는건 나의 삽질에 큰 도움이 된다. 아래 함수를 잘 적용하면 손상된 이미지를 찾는데에 도움이 될 것이다. 이미지 경로를 glob으로 죄다 긁어서 함수에 넣어주면 된다. def truncated..
2023.12.06 -
현재 DISPLAY가 되지 않아서 cv2.imshow가 작동할 수 없다는 에러이다. 원격 서버 display가 되지 않는 환경이라면 display가 되게 세팅하거나 cv2.imshow를 사용하지 않는 것이 좋다. 원격 서버에서 GUI를 띄우는 방법은 https://beelinekim.tistory.com/15 글을 참고할 수 있다. reinstall 하면 해결될 수도 있다는 글도 있었지만 나 같은 경우에는 해결되지 않았다. 혹시 해결될 수도 있어 첨부한다. reinstall 해결방법1 pip uninstall opencv-python pip install opencv-python reinstall 해결방법2 pip uninstall opencv-python pip install opencv-python-..
qt.qpa.xcb: could not connect to display :0qt.qpa.plugin: Could not load the Qt platform plugin "xcb" ...현재 DISPLAY가 되지 않아서 cv2.imshow가 작동할 수 없다는 에러이다. 원격 서버 display가 되지 않는 환경이라면 display가 되게 세팅하거나 cv2.imshow를 사용하지 않는 것이 좋다. 원격 서버에서 GUI를 띄우는 방법은 https://beelinekim.tistory.com/15 글을 참고할 수 있다. reinstall 하면 해결될 수도 있다는 글도 있었지만 나 같은 경우에는 해결되지 않았다. 혹시 해결될 수도 있어 첨부한다. reinstall 해결방법1 pip uninstall opencv-python pip install opencv-python reinstall 해결방법2 pip uninstall opencv-python pip install opencv-python-..
2023.10.04 -
shutil, glob 모듈을 이용해서 특정 경로에 있는 파일을 한번에 복사하는 스크립트를 짜보도록 하겠습니다. 많은 방법이 있지만 이번에는 shutil.copyfile 을 이용해서 복사해보려고 합니다. 복사하고자하는 폴더 경로 = ‘./source’ source 폴더 내 파일들은 .jpg .json 파일 여러개가 있다고 가정해봅시다. 복사하려는 파일들을 저장할 경로 = ‘./target .jpg .json 파일들을 target 폴더로 모두 복사해보겠습니다. import os from glob import glob import shutil def main(): source_dir = './source' target_dir = './target' source_paths = glob(os.path.join(..
Python 특정 폴더 내 파일들을 모두 복사하기shutil, glob 모듈을 이용해서 특정 경로에 있는 파일을 한번에 복사하는 스크립트를 짜보도록 하겠습니다. 많은 방법이 있지만 이번에는 shutil.copyfile 을 이용해서 복사해보려고 합니다. 복사하고자하는 폴더 경로 = ‘./source’ source 폴더 내 파일들은 .jpg .json 파일 여러개가 있다고 가정해봅시다. 복사하려는 파일들을 저장할 경로 = ‘./target .jpg .json 파일들을 target 폴더로 모두 복사해보겠습니다. import os from glob import glob import shutil def main(): source_dir = './source' target_dir = './target' source_paths = glob(os.path.join(..
2023.08.18 -
물체의 경계선을 찾고 그리는 방법입니다. contour의 좌표가 이미 있다면 (annotation이 있는 경우) cv2.drawContours에 좌표를 바로 넣으시면 됩니다. import cv2 import numpy as np import matplotlib.pyplot as plt # 이미지 로드 # 그레이스케일로 변환 img = cv2.imread("opencv/경계선검출/testimg.png", cv2.IMREAD_GRAYSCALE) img_resize = cv2.resize(img, (450, 200)) img_resize_copy = img_resize.copy() # 정확도를 높이기 위해 binary 이미지로 변환 # 픽셀의 밝기값이 125이상이면 255, 아니면 0 # 도형픽셀의 밝기가 1..
opencv 경계선 찾기/그리기 (cv2.findContours / cv2.drawContours)물체의 경계선을 찾고 그리는 방법입니다. contour의 좌표가 이미 있다면 (annotation이 있는 경우) cv2.drawContours에 좌표를 바로 넣으시면 됩니다. import cv2 import numpy as np import matplotlib.pyplot as plt # 이미지 로드 # 그레이스케일로 변환 img = cv2.imread("opencv/경계선검출/testimg.png", cv2.IMREAD_GRAYSCALE) img_resize = cv2.resize(img, (450, 200)) img_resize_copy = img_resize.copy() # 정확도를 높이기 위해 binary 이미지로 변환 # 픽셀의 밝기값이 125이상이면 255, 아니면 0 # 도형픽셀의 밝기가 1..
2023.04.02 -
파이썬을 사용하다보면 파일 리스트를 가져와서 다룰일이 참 많은 것 같습니다. 파일 리스트를 다루기 유용하고 제가 자주쓰는 함수를 정리해봤습니다. 물론 다른 좋은 것들이 많을 것이고, 새로운 것들을 알게 되면 글이 추가될 수도 있습니다😀 glob glob 함수는 리눅스식 경로 표기법을 사용하여 원하는 폴더/파일 리스트를 얻을 수 있습니다. 경로까지 추출해주어 다루기 편리합니다. 아래 예제를 보면서 이야기 하겠습니다. D드라이브 내에 d라는 이름의 폴더를 만들고 그 폴더 내에 1, 11, 111, 1111, 11111 폴더 다섯개를 만들었습니다. 모든 하위 폴더/파일을 선택할 때는 * 기호로 선택할 수 있습니다. *은 리눅스에서 모두 선택을 의미하는 기호입니다. from glob import glob dir..
python 파이썬 파일 리스트 가져오기 (glob)파이썬을 사용하다보면 파일 리스트를 가져와서 다룰일이 참 많은 것 같습니다. 파일 리스트를 다루기 유용하고 제가 자주쓰는 함수를 정리해봤습니다. 물론 다른 좋은 것들이 많을 것이고, 새로운 것들을 알게 되면 글이 추가될 수도 있습니다😀 glob glob 함수는 리눅스식 경로 표기법을 사용하여 원하는 폴더/파일 리스트를 얻을 수 있습니다. 경로까지 추출해주어 다루기 편리합니다. 아래 예제를 보면서 이야기 하겠습니다. D드라이브 내에 d라는 이름의 폴더를 만들고 그 폴더 내에 1, 11, 111, 1111, 11111 폴더 다섯개를 만들었습니다. 모든 하위 폴더/파일을 선택할 때는 * 기호로 선택할 수 있습니다. *은 리눅스에서 모두 선택을 의미하는 기호입니다. from glob import glob dir..
2021.12.21 -
파이썬에서 가장 기초적인 반복문인 for문의 정리와 함께 유용한 팁 몇가지를 소개해 드리겠습니다. for문은 아주 유용한 반복문입니다. 처리속도가 느릴 수 있지만 표현하기 참 편리한 방법이죠. 먼저, 반복가능한 여러 타입들을 보겠습니다. 제가 적은 것 말고도 아주 많은 예시들이 더 있을테지만, 제가 생각나는데까지 적어볼게요. 1. for문의 표현식과 반복가능한 타입 import numpy as np array_ = np.array([1, 2, 3, 4]) for i in array_: print(i) 1 2 3 4 list_ = [1, 2, 3, 4] for i in list_: print(i) 1 2 3 4 tuple_ = (1, 2, 3, 4) for i in tuple_: print(i) 1 2 3..
[python] python for문 정리 + 유용한 팁파이썬에서 가장 기초적인 반복문인 for문의 정리와 함께 유용한 팁 몇가지를 소개해 드리겠습니다. for문은 아주 유용한 반복문입니다. 처리속도가 느릴 수 있지만 표현하기 참 편리한 방법이죠. 먼저, 반복가능한 여러 타입들을 보겠습니다. 제가 적은 것 말고도 아주 많은 예시들이 더 있을테지만, 제가 생각나는데까지 적어볼게요. 1. for문의 표현식과 반복가능한 타입 import numpy as np array_ = np.array([1, 2, 3, 4]) for i in array_: print(i) 1 2 3 4 list_ = [1, 2, 3, 4] for i in list_: print(i) 1 2 3 4 tuple_ = (1, 2, 3, 4) for i in tuple_: print(i) 1 2 3..
2021.02.17