반응형

어떤 이미지 또는 영상의 원본 해상도 크기가 너무 클 때 아래 함수로 Downscale을 할 수 있다.

'''
    made by 안산드레아스
    출력하는 영상 또는 이미지의 크기가 너무 클때 Downscale 시키는 함수
    필요 패키지 : python-opencv
'''
import cv2

'''
   x값에 0~1280 내 값을 넣으면 화면비율을 축소시키는 함수 정의
'''
def downscale(img, x):
    if x > 1280:
        print("Down Scale not available because you exceed maximum size")
        return

    y = int(0.75 * x)
    print(x)
    print(y)
    img = cv2.resize(img, (x, y))
    cv2.imshow('b', img)
    return img


# 현재경로의 이미지 불러오기
sample = cv2.imread('./0.jpg')

# 함수 실행하기
# 0~1280 사이 값으로 Downscale 하고자 하는 비율값을 입력
result = downscale(sample, 1280)


cv2.waitKey(0)
cv2.destroyAllWindows()

 

현재 이미지의 기본크기 그대로 불러오기 위해서는 1280 값 입력

 

반응형

 

scale 500 입력시

scale 300 입력시

 

 

 

예외처리) 만약 1280보다 큰값을 입력하면 예외처리 프린터문. 0보다 작을경우 에러발생

 

반응형
반응형

파이참을 이용해 개발환경을 구축하는 방법은 아래 참고.

https://ansan-survivor.tistory.com/134

 

Pycharm(파이참)을 이용하여 Python 개발환경 구축하기

파이참은 파이썬 개발을 편리하게 하는 많은 기능을 제공하는 툴이다. https://www.jetbrains.com/pycharm/download/#section=windows Download PyCharm: Python IDE for Professional Developers by JetBrains Do..

ansan-survivor.tistory.com

 

 

파이썬 오픈소스 영상처리 라이브러리인 OpenCV는 모두가 쉽게 사용할 수 있다.

영상처리를 위해 라이브러리를 설치해야 하는데, 만약 설치가 되어있지 않다면 파이참에서 cv2를 import했을 때 아래와 같이 빨간줄이 나온다. 해당 라이브러리가 없기 때문.

파이참에서는 손쉽게 바로 받을 수 있다.

 

1. 맨 아래 윈도우 터미널 창 클릭

 

2, 설치 명령(아래 코드)을 입력. (인터넷에서 가장 최신버전의 OpenCV가 설치된다.)

pip install opencv-python

반응형

(결과)

설치가 바로 진행되며, 완료 후 Package명과 버전을 보여준다.

그리고 이제 빨간줄이 없어짐을 볼 수 있다.

 

파이참에서 패키지를 설치하는 방법에 대한 자세한 사항은 아래참고

https://ansan-survivor.tistory.com/582

 

파이참(pycharm)에서 파이썬 패키지 라이브러리 설치하기

파이썬 패키지를 윈도우 cmd 터미널 창에서 설치할 수 있듯이, 파이참 내부에서도 해당 동일한 터미널 환경을 제공한다. 이를 이용해 pip 명령어로 패키지 설치가 가능하다. 또한 GUI환경으로 손쉽

ansan-survivor.tistory.com

 

반응형
반응형

파이썬에서 가장 많이 쓰기고 효율적으로 사용할 수 있는 list의 예제들이다.

결과를 보고 어떤식으로 동작하는지 확인하여 사용한다.

 

1. 두 리스트를 하나의 리스트로 합치기

2. 리스트를 *(곱하기) 하여 반복추가하기

3. 배열의 일부 위치에 다른 배열값으로 교체하기

4. 배열의 끝에 값 추가하기

5. 배열 내부 값 지우고 땡겨오기

6. 배열 역순배치하기

7. 일부 index를 찾아 조작하기

8. sort함수 사용하여 정렬하기

''' 리스트 다루기 '''

# 리스트는 왼쪽에서는 0부터 세고, 오른쪽부터는 -1으로 센다.

char = ['a','b','c','d']
string = ["one","two","three"]
ch_st = char + string

print(ch_st)        # character와 string을 합칠 수 있다. 한배열로.
print(char * 3)     # a,b,c,d 와 같은 character를 뒤에 3배로 배열함.

ch_st[0:3] = [0,1,2,3]  # 배열의 0~3자리에 숫자를 넣어
print(ch_st)

ch_st.append(30)    # 배열의 끝에 ()의 값을 넣어준다.
print(ch_st)

del ch_st[7]         # 7번째 배열의 값을 지운다.
print(ch_st)        # 값을 지우면 맨 뒤에 있는 값을 앞으로 땡겨온다.

ch_st.reverse()      # 역순배치
print(ch_st)

print('\n') #개행

# 인덱스 값 추가하기.  insert(인덱싱,값) 함수.
test_list = [0,1,2,3,4]
test_list.insert(1,'damn')  # 인덱스값 1앞에 'damn'을 삽입하라.
print(test_list)

# 인덱스 값 순서대로 정렬하기.  sort() 함수.
test = [5,1,2,3,9,8]
test.sort()
print(test)

(결과)

 

 

 

 

반응형
반응형

파이썬 코드가 예상한데로 잘 작동하면 좋지만, 때로는 어떤 로직적인 실수로 무한루프에 빠져 시스템이 먹통이 되는 경우가 발생 할 수 있다.

 

그 경우에는 if문을 잘 활용해서 특정 코드가 들어왔을 때 먹통이 되는 루프를 빠져나갈 수 있도록 하면 좋다.

아래 코드는 유저에게 정수만 입력을 받고, 숫자 9가 들어왔을 때 해당 무한루프를 빠져나갈 수 있도록 한다.

#무한루프 상태 방지 (메모리 영역을 잠식하여 시스템 한계 봉착 예방)

EventExt = 0

while True:             #C언어 While(1) 이랑 같음. 무한루프

    print("항상 상태를 감시하는 무한 루프")
    EventExt = int(input("이벤트용 정수를 넣어라"))

    if (EventExt == 9):
        print("무한루프 탈출")
        break

 

(주석 처리했을 때)

어떤 값을 입력해도 해당 코드를 빠져나가지 못한다. 무한루프가 반복된다.

 

루프를 탈출 할 수 있는 예외 코드.

(if문의 주석을 해제 할때)

 

 

반응형
반응형

아래 코드를 돌리면 결과를 확인 할 수 있다.

#오름차순, 내림차순 순서정렬



sortList = [1,10,8,5,4,3,6,9,2,7]
print(" 순서 오름차순 정렬전",sortList,"입니다")

for i in range (0, (len(sortList)-1)):  # 0부터 시작하므로, 리스트수 - 1
    t = i

    for j in range (i+1, len(sortList)):    #다음 부터 시작하므로 리스트 개수
        if(sortList[t] > sortList[j]):      #sortList[0] > sortList[1] 인지 판단
            t = j

    temp = sortList[i]
    sortList[i] = sortList[t]
    sortList[t] = temp

print( "순서 오름차순 후",sortList,"입니다")

###########################################################

sortList = [1,10,8,5,4,3,6,9,2,7]
print(" 순서 내림차순 정렬전",sortList,"입니다")

for i in range (0, (len(sortList)-1)):  # 0부터 시작하므로, 리스트수 - 1
    t = i

    for j in range (i+1, len(sortList)):    #다음 부터 시작하므로 리스트 개수
        if(sortList[t] < sortList[j]):      #sortList[0] > sortList[1] 인지 판단
            t = j

    temp = sortList[i]
    sortList[i] = sortList[t]
    sortList[t] = temp

print( "순서 오름차순 후",sortList,"입니다")

리스트에 들어간 수를 오름차순 및 내림차순.

(결과)

 

반응형
반응형

아래 코드는 원의 크기를 구하는 식이다.

유저가 반지름 값을 직접 입력하면 원의 크기가 구해진다.

 

input('출력명') 함수는 유저에게 값을 입력받는 함수이다.

 

radius = int (input('반지름:'))
pi = 3.14
area = pi * radius * radius
print(area)

 

(결과 테스트)

 1. 유저가 입력

 2. 결과 출력

반응형
반응형

 

사람이 수학에서 쓰는 표현 방식으로 나타낼 수 있다.

'''
고급수학 숫자 형식처럼 출력하기.
[10.1f]  에서 10은 숫자표시, 1은 소숫점 이하 자리 정밀도 표시
[10.2e]  에서 10은 숫자표시, e는 10의 몇 승으로 표시.
'''

pi = 3.14159

print(format(pi,"10.1f"))   # 소숫점 자릿수 표현.
print(format(pi,"10.3f"))
print(format(pi,"10.5f"))
print("\n")
print(format(pi,"10.1e"))   # 10의 몇승으로 표현.
print(format(pi,"10.3e"))
print(format(pi,"10.5e"))
print("\n")
print(format(300,"10d"))    # 앞에 공백을 10자리 포함.
print(format(300,"5d"))

 

(결과)

 

 

 

반응형
반응형

 

파일을 열고 한줄씩 읽기.

 

현재 경로에서 abc.txt 파일을 read모드로 열고 해당 instance를 print하면 한줄씩 프린트할 수 있다.

#파일 불러와서 읽기.

testFile = open('.\\abc.txt','r')  # 'r' read의 약자, 'rb' read binary 약자 (그림같은 이미지 파일 읽을때)
readFile = testFile.readline()
print(readFile)

readFile = testFile.readline()
print(readFile)

(결과)

 

 

기존의 파일을 열고 한줄 추가하기.

 

현재 경로에서 abc.txt 파일을 add 모드로 열고 해당 write로 한줄 추가한다.

#파일에 추가하기. (문자열을 추가하는 예제)
testFile = open('.\\abc.txt','a')  # 'a' 문자열 추가 약자
testFile.write('\n 대한민국.')
testFile.close()

(결과) 맨 아랫줄에 "대한민국." 이 생겼다.

반응형

 

 

새로운 파일을 생성하고 내부에 글 추가하기.

 

현재 경로에서 abc1.txt 파일을 생성 시키고 "쓰기테스트"라고 쓴다.

#파일 생성해 새로 쓰기
testFile1 = open('C:\\abc1.txt','w') # w: write 쓴다
testFile1.write('쓰기테스트')
testFile1.close()

(결과) 새로운 파일 abc1.txt 가 생성되고, 내부에 "쓰기테스트"라고 쓰여있다.

 

 

그림 파일을 읽기.

 

그림은 결국 bit의 집합이다. 그림파일의 모든 bit값들을 불러와 변수에 저장할 수 있다.

#그림 파일 읽기

testFile = open('.\\0.jpg','rb')
readFile = testFile.readline()
print(readFile)

(결과) 비트값을 읽어서 출력.

 

<파일을 폴더에 복사 및 파일 이동관련은 아래 참고>

https://ansan-survivor.tistory.com/917

 

[python] 파이썬 파일 복사, 폴더에 복사, 파일 이동

아래 코드는 text.txt 파일을 복사 및 폴더에 복사, 이동 코드이다. 절대경로 사용 및 상대경로 사용 import shutil ############## 복사 ####################### # 현재 디렉터리에서 파일 복사하기 후 다른 폴..

ansan-survivor.tistory.com

 

반응형
123456

+ Recent posts