Python

Python Opencv 기초 - 1

minsugar 2023. 2. 27. 16:39

시작전 필요한 라이브러리 :

pip install numpy

pip install cv2, pip install python-opencv

 

import numpy as np # numpy -> np 로 사용하겠다는 뜻입니다.
import cv2

image1 = np.ones((400,400),dtype=np.uint8)*0 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)
image2 = np.ones((400,400),dtype=np.uint8)*255 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)

cv2.imshow("image1",image1) # 윈도우 생성해서 image1을 불러옵니다.
cv2.imshow("image2",image2) # 윈도우 생성해서 image2을 불러옵니다.
cv2.waitKey(0) # 키 이벤트가 발생하기 전까지 종료되지 않습니다.

코드 주석참고

 

만들어 진 윈도우의 위치가 정해져있지않아.

위치까지 정해주도록 하겠습니다.

 

왼쪽 상단부터 0,0 입니다.

 

import numpy as np # numpy 를 np로 사용하겠다고 이해하면 됩니다.
import cv2

image1 = np.ones((400,400),dtype=np.uint8)*0 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)
image2 = np.ones((400,400),dtype=np.uint8)*255 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)

cv2.imshow("image1",image1) # 윈도우 생성해서 image1을 불러옵니다.
cv2.imshow("image2", image2) # 윈도우 생성해서 image2을 불러옵니다.

cv2.moveWindow('image1',0,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.
cv2.moveWindow('image2',400,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.


cv2.waitKey(0) # 키 이벤트가 발생하기 전까지 종료되지 않습니다.

코드 주석참고

 

왼쪽 상단부터 0.0으로 image 1 = 0.0 부터 시작 

image2 = 400, 0부터 시작
결과를 출력하였습니다.

 

import numpy as np # numpy 를 np로 사용하겠다고 이해하면 됩니다.
import cv2

image1 = np.ones((400,400),dtype=np.uint8)*0 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)
image2 = np.ones((400,400),dtype=np.uint8)*255 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)

cv2.imshow("image1",image1) # 윈도우 생성해서 image1을 불러옵니다.
cv2.imshow("image2", image2) # 윈도우 생성해서 image2을 불러옵니다.

cv2.moveWindow('image1',0,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.
cv2.moveWindow('image2',400,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.

def mousecallback(event,x,y,flags,param): # 마우스 콜백함수
    print(x,y)

cv2.setMouseCallback("image1",mousecallback) # (윈도우이름,마우스이벤트콜백함수)

cv2.waitKey(0) # 키 이벤트가 발생하기 전까지 종료되지 않습니다.

코드 주석참고.

코드의 결과를 보게 되면 image1이라는 윈도우에 마우스 포인트가 올라갈 경우 그 위치의 x, y 좌표를 실시간으로 찍어줍니다.

여기서 반복문을 사용하지 않아도 왜 자꾸 나오는가 ?

cv2.waitKey(0)을 사용하게 되면서 키 이벤트가 작동하기 전까지는 꺼지지 않습니다. 근데 코드는 돌아가게 되니 x, y 좌표가 자꾸 생성되는 겁니다.

 

마우스 이벤트로 왼쪽 버튼, 오른쪽 버튼, 휠 버튼, 더블클릭 등등 마우스로 사용할 수 있는 모든 기능들을 사용할 수 있습니다.

import numpy as np # numpy 를 np로 사용하겠다고 이해하면 됩니다.
import cv2

image1 = np.ones((400,400),dtype=np.uint8)*0 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)
image2 = np.ones((400,400),dtype=np.uint8)*255 #초기화 및 생성 크기,타입 곱 연산을 줘서 색상을 표현할 수 있습니다. 0~255(검정~흰색)

cv2.imshow("image1",image1) # 윈도우 생성해서 image1을 불러옵니다.
cv2.imshow("image2", image2) # 윈도우 생성해서 image2을 불러옵니다.

cv2.moveWindow('image1',0,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.
cv2.moveWindow('image2',400,0) # 이동하고싶은 윈도우 이름, 좌표 지정해주면 이동합니다.

def mousecallback(event,x,y,flags,param): #마우스 콜백함수 
    print(x,y)

cv2.setMouseCallback("image1",mousecallback) # (윈도우이름,마우스이벤트콜백함수)

def trackbarValue(pos): # 트랙바 함수
    image1[:,:]=pos # image[높이,너비] [:,:] x,y 0부터 끝까지 라고 보시면됩니다. 그값을 트랙바 pos 값을 대입하여 밝기 조절기능을 추가했습니다.
    cv2.imshow("image1", image1)  # 윈도우 생성해서 image1을 불러옵니다.

cv2.createTrackbar('Value','image1',100,255,trackbarValue) # (트랙바이름,윈도우이름,시작값,최대값,트랙바함수)


cv2.waitKey(0) # 키 이벤트가 발생하기 전까지 종료되지 않습니다.

주석 참고

눈 아픔 주의!
트랙 바를 움직이면서 화면 밝기를 조절할 수 있습니다.