Python을 사용하여 색상 팔레트 만들기

Python을 사용하여 색상 팔레트 만들기

인간은 약 1000만 가지의 색을 구별할 수 있습니다. 이를 인식하려면 색상 팔레트라는 것이 필요합니다. 색상 팔레트에는 육안으로 볼 수 있는 전체 색상 범위를 표시하는 도구가 포함되어 있습니다. 실제 세계에서는 종이에 미적 디자인을 만드는 데 사용하고 디지털에서는 화면 요소에 색상을 추가하는 데 사용합니다.

궁극적으로 컴퓨터는 특정 형식을 사용하여 화면에 표시되는 모든 다양한 음영을 인코딩합니다. Python을 사용하면 OpenCV 및 NumPy 모듈 덕분에 단 몇 줄의 코드로 RGB 인코딩 색상 팔레트를 개발할 수 있습니다.

OpenCV 및 NumPy 모듈

OpenCV를 사용하여 이미지와 동영상을 분석할 수 있습니다. 무료이며 오픈 소스이며 사용이 간편하고 유용한 라이브러리가 포함되어 있습니다. 이들은 2차원과 3차원 모두에서 물체를 분류하고, 찾고, 추적하는 기술을 제공합니다. 환경에 OpenCV를 설치하려면 터미널을 열고 다음을 실행하십시오.

pip install opencv-python

NumPy 모듈은 많은 Python 프로그램에서 사용하는 또 다른 인기 있는 라이브러리입니다. 숫자 Python인 NumPy는 데이터 분석 및 과학 컴퓨팅에 사용할 수 있는 모듈입니다. n차원 배열 개체와 이러한 배열을 조작하는 데 도움이 되는 수학적 연산을 제공합니다.

환경에 NumPy를 설치하려면 다음을 실행합니다.

pip install numpy

일반적으로 OpenCV를 사용하여 가장자리 감지와 같은 기술을 사용하여 이미지를 처리합니다. 그런 다음 NumPy를 사용하여 처리된 이미지에 대한 데이터 분석을 수행할 수 있습니다. 이 조합을 사용하여 QR 코드를 만들고 해독하고, 이미지를 분류하고, 광학 문자 인식을 수행하고, 동작을 감지하고 개인을 실시간으로 추적할 수 있는 비디오 감시 시스템을 구축할 수 있습니다.

Python을 사용하여 색상 팔레트를 만드는 방법

Python에서 OpenCV 및 NumPy 모듈을 사용하여 색상 팔레트를 빌드하려면 다음 단계를 따르십시오.

OpenCV 및 NumPy 모듈을 가져오는 것으로 시작합니다. pass 문을 포함하는 emptyfunction() 이라는 함수를 정의합니다 . pass 문은 나중에 작성할 수 있는 코드의 자리 표시자 역할을 합니다. 이는 나중에 사용할 createTrackbar와 같은 기능에 특히 유용합니다. 유효한 콜백 함수가 필요하며 지금은 emptyFunction을 자리 표시자로 전달할 수 있습니다.

import cv2
import numpy as np

def emptyFunction():
    pass

NumPy의 zero() 함수 를 사용하여 데이터 유형이 uint8인 512 * 512 * 3 크기의 3차원 배열을 생성합니다 . 각 배열은 512개의 열과 512개의 행으로 구성됩니다. uint8 은 부호 없는 정수를 나타내므로 프로그램은 배열을 0으로 채웁니다.

image = np.zeros((512, 512, 3), np.uint8)

프로그램이 표시할 창의 이름을 설정하고 창을 생성하기 위해 namedWindow() 함수에 전달합니다:

windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

다음으로 빨간색, 녹색 및 파란색 구성 요소에 대한 세 개의 트랙 바를 생성합니다. OpenCV의 createTrackbar() 함수를 사용하여 이를 수행할 수 있습니다. 먼저 레이블을 Red, Blue 또는 Green으로 전달합니다. 둘째, 이러한 막대를 배치할 창의 이름(예: windowName)을 전달해야 합니다.

세 번째 매개변수는 트랙 바의 최소 제한이며 이 경우 0입니다. 네 번째 매개변수는 최대값을 지정하며 24비트 색상 값의 경우 255입니다. 다섯 번째이자 마지막 매개변수는 createTrackbar에 유효한 함수가 필요한 콜백 함수입니다. 이것이 자리 표시자 역할을 하기 위해 이전에 emptyFunction을 만든 이유입니다.

cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

무한 while 루프를 선언하고 표시하려는 이미지와 함께 창 이름을 OpenCV의 imshow() 함수에 전달합니다. 이미지에 0의 3차원 배열이 포함되어 있으므로 프로그램은 처음에 검은색 화면을 표시합니다.

27(Escape 키의 ASCII 코드)에 대해 waitkey() 의 값을 테스트하여 사용자가 Esc 키를 눌렀는지 확인하십시오 . waitkey() 함수는 주어진 밀리초 동안 또는 키를 누를 때까지 창을 표시합니다. 하나를 입력으로 전달하면 1밀리초 동안 창을 표시하지만 무한 while 루프로 인해 재생성됩니다.

트랙 바의 현재 위치를 가져오려면 창 이름과 함께 트랙 바 이름을 getTrackbarPos() 에 전달 합니다. 파란색, 녹색 및 빨간색의 세 가지 별도 색상 구성 요소에 대해 이 단계를 반복합니다. 슬라이스 연산자를 사용하여 세 개의 값을 이미지 배열에 할당합니다. 이렇게 하면 트랙 바의 위치에 따라 이전 값 세트(처음에는 모두 0)가 현재 값으로 대체됩니다.

while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break


    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

사용자가 Esc 키를 누르면 destroyAllWindows() 를 사용 하여 프로그램이 연 창을 닫습니다.

cv2.destroyAllWindows()

마지막으로 모든 것을 모아서 실행하여 색상 팔레트를 제어하고 봅니다.

Python 색상 팔레트 프로그램의 출력

위의 프로그램을 실행하면 파란색, 녹색 및 빨간색에 대한 세 개의 트랙 바가 포함된 창이 나타납니다. 트랙 바는 0에서 255 사이의 범위에서 이동합니다. 다른 바의 값을 변경하면 아래 섹션에서 다양한 색상 음영을 볼 수 있습니다.

이 첫 번째 예에서는 파란색 막대를 0으로, 녹색을 69로, 빨간색을 255로 설정한 것을 볼 수 있습니다. 결과 출력 색상은 주황색/빨간색 음영입니다. 또한 터미널 창에는 색상 값이 0 69 255로 표시됩니다.

주황색 빨간색을 위한 색상 팔레트

마찬가지로 파란색 막대를 130, 녹색을 0, 빨간색을 75로 설정하면 남색을 얻을 수 있습니다.

인디고용 컬러 팔레트

OpenCV의 다양한 응용

OpenCV는 이미지 처리, 객체 인식, 얼굴 인식 및 추적과 같은 작업에 유용한 기능을 제공합니다. OpenCV를 사용하면 로봇 공학, 산업 자동화, 의료 영상 및 감시 시스템과 같은 분야에서 도움이 될 실시간 컴퓨터 비전 응용 프로그램을 생성할 수 있습니다.

컴퓨터 비전의 미래는 유망합니다. 컴퓨터 비전을 사용하여 시각 장애인을 돕고, 농업 분야에서 더 나은 성장을 거두고, 자율 주행 자동차를 사용하여 도로 안전을 강화하고, 화성과 같은 다른 행성을 탐색할 수도 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다