๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

AI/Computer Vision

[Computer Vision] ์˜์ƒ์˜ ๋ช…์•” ์ œ์–ด

728x90
๋ฐ˜์‘ํ˜•
๐Ÿ‘€ ๋ณธ ์˜ˆ์ œ๋Š” Window10์˜ VSCode, Python3.11.0๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

OpenCV์—์„œ ์ปฌ๋Ÿฌ ์˜์ƒ์ด ์•„๋‹Œ GrayScale๋กœ ์ด๋ฏธ์ง€๋ฅผ ์—ด๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ ์ขŒํ‘œ์˜ ๊ฐ’์„ ์ƒ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€์˜ ๋ช…์•”์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

import numpy as np
import cv2

white = np.ones(shape=(480,480),dtype=np.uint8) * 255
cv2.imshow("white",white)
black = np.zeros(shape=(480,480),dtype=np.uint8)
cv2.imshow("black",black)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

๋ฐ๊ธฐ๊ฐ€ 0์ธ ์˜์ƒ(๊ฒ€์€์ƒ‰)

 

 

๋ฐ๊ธฐ๊ฐ€ 255์ธ ์˜์ƒ(ํฐ์ƒ‰)

 

 

Gray Scale ์˜์ƒ์˜ ํ”ฝ์…€์˜ ๊ฐ’์ด 0์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ํ•ด๋‹น ํ”ฝ์…€์€ ๊ฒ€์€์ƒ‰์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  255๋กœ ๊ฐˆ์ˆ˜๋ก ํฐ์ƒ‰์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค.

 

import cv2
import numpy as np
img = np.zeros((480,480),np.uint8)
now = 0
def lighting(brightness: int) -> None:
    global img, now
    delta = brightness - now
    
    # ๋ฐ๊ธฐ ์กฐ์ •
    if delta > 0:
        img = cv2.add(img, delta)
    elif delta < 0:
        img = cv2.subtract(img, -delta)
    now = brightness

    cv2.imshow("lighting_bar", img)

if __name__ == "__main__":
    cv2.imshow("lighting_bar",img)
    cv2.createTrackbar("Control","lighting_bar",now,255,lighting)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

 

 

ํžˆ์Šคํ† ๊ทธ๋žจ์„ ํ†ตํ•ด ์˜์ƒ์˜ ๋ฐ๊ธฐ ๋ถ„ํฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

import cv2
import matplotlib.pyplot as plt
if __name__ == "__main__":
    image = cv2.imread("test.png",cv2.IMREAD_GRAYSCALE)
    plt.hist(image.ravel(),256,[0,256])
    plt.show()

 

 

์ปฌ๋Ÿฌ ๋ถ„ํฌ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

import cv2
import matplotlib.pyplot as plt
if __name__ == "__main__":
    image = cv2.imread("test.png")
    color = ('b','g','r')
    for i,col in enumerate(color):
        histr = cv2.calcHist([image],[i],None,[256],[0,256])
        plt.plot(histr,color=col)
        plt.xlim([0,256])
    plt.show()

728x90
๋ฐ˜์‘ํ˜•