OpenCV에서 트랙 바를 사용하여 이미지 임계 값 조정
소개
OpenCV 트랙 바를 사용하여,
이미지 처리 시 파라미터를 조정하기 위한 테스트 프로그램.
이번에는 감마 보정 된 이미지에 대해 이진화가 수행됩니다.
테스트용 이미지 로드
카메라에서 얻은 이미지를 사용합니다.
취득한 화상을 그레이 스케일로 변환하여 화소값의 최대를 취득(감마 보정용)
import cv2
import sys
cameraId = 0
capCam = cv2.VideoCapture(cameraId)
if not capCam.isOpened():
sys.exit()
ret, frame = capCam.read()
gray = cv2.cvtColor(frame, cv2.COLOR_RGBA2GRAY)
grayMax = gray.max()
트랙바 생성
감마 보정 값 (gamma)과 임계 값 (threshold1)을 조정하기위한 트랙 바 생성
gamma = 0.5
threshold = 28
def nothing(x):
pass
cv2.namedWindow('window')
cv2.createTrackbar('gamma','window', int(gamma*10) , 50, nothing)
cv2.createTrackbar('threshold1','window', threshold , 255, nothing)
인수는 다음과 같습니다.
CreateTrackbar(trackbarName, windowName, value, count, onChange)
- trackbarname : 생성되는 트랙 바의 이름
- windowName : 작성되는 트랙 바의 부모로서 사용되는 윈도우의 이름 (사전에 생성해 둔다)
- value : 생성시 슬라이더 위치
- count : 슬라이더의 최대값(최소값은 0 고정)
- onChange : 슬라이더 위치 변경 시 콜백
gamma에는 0.1 단위의 값을 적용하고 싶기 때문에,
트랙 바상은 10배한 값으로 하고 있다.
트랙바 및 이미지 표시
트랙바에서 값을 가져와 이미지에 적용
import numpy as np
delay = 1
ESC_KEY = 27
while True:
# ESCキーを入力したら終了
if cv2.waitKey(delay) == ESC_KEY:
break
# トラックバーから値を取得
gamma = cv2.getTrackbarPos('gamma','window')
threshold = cv2.getTrackbarPos('threshold1','window')
if gamma > 0:
gamma /= 10
else:
gamma = 0.1
# ガンマ補正
lut = np.zeros((256, 1), dtype='uint8')
for i in range(256):
lut[i][0] = grayMax * pow(float(i)/grayMax, 1.0/gamma)
gray_gamma = cv2.LUT(gray, lut)
# 二値化
ret, threshold = cv2.threshold(gray_gamma, threshold, 255, cv2.THRESH_BINARY)
# 描画
cv2.imshow("window", threshold)
gamma는 1/10으로 한 값을 사용한다.
0은 허용되지 않기 때문에 0.1로 보정한다.
표시하면 다음과 같은 이미지가됩니다.
슬라이더로 파라미터를 변경하면 적용된 값으로 그려진다.
Reference
이 문제에 관하여(OpenCV에서 트랙 바를 사용하여 이미지 임계 값 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TanakaSystem/items/b10572fda6f1fb7b9413
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
카메라에서 얻은 이미지를 사용합니다.
취득한 화상을 그레이 스케일로 변환하여 화소값의 최대를 취득(감마 보정용)
import cv2
import sys
cameraId = 0
capCam = cv2.VideoCapture(cameraId)
if not capCam.isOpened():
sys.exit()
ret, frame = capCam.read()
gray = cv2.cvtColor(frame, cv2.COLOR_RGBA2GRAY)
grayMax = gray.max()
트랙바 생성
감마 보정 값 (gamma)과 임계 값 (threshold1)을 조정하기위한 트랙 바 생성
gamma = 0.5
threshold = 28
def nothing(x):
pass
cv2.namedWindow('window')
cv2.createTrackbar('gamma','window', int(gamma*10) , 50, nothing)
cv2.createTrackbar('threshold1','window', threshold , 255, nothing)
인수는 다음과 같습니다.
CreateTrackbar(trackbarName, windowName, value, count, onChange)
- trackbarname : 생성되는 트랙 바의 이름
- windowName : 작성되는 트랙 바의 부모로서 사용되는 윈도우의 이름 (사전에 생성해 둔다)
- value : 생성시 슬라이더 위치
- count : 슬라이더의 최대값(최소값은 0 고정)
- onChange : 슬라이더 위치 변경 시 콜백
gamma에는 0.1 단위의 값을 적용하고 싶기 때문에,
트랙 바상은 10배한 값으로 하고 있다.
트랙바 및 이미지 표시
트랙바에서 값을 가져와 이미지에 적용
import numpy as np
delay = 1
ESC_KEY = 27
while True:
# ESCキーを入力したら終了
if cv2.waitKey(delay) == ESC_KEY:
break
# トラックバーから値を取得
gamma = cv2.getTrackbarPos('gamma','window')
threshold = cv2.getTrackbarPos('threshold1','window')
if gamma > 0:
gamma /= 10
else:
gamma = 0.1
# ガンマ補正
lut = np.zeros((256, 1), dtype='uint8')
for i in range(256):
lut[i][0] = grayMax * pow(float(i)/grayMax, 1.0/gamma)
gray_gamma = cv2.LUT(gray, lut)
# 二値化
ret, threshold = cv2.threshold(gray_gamma, threshold, 255, cv2.THRESH_BINARY)
# 描画
cv2.imshow("window", threshold)
gamma는 1/10으로 한 값을 사용한다.
0은 허용되지 않기 때문에 0.1로 보정한다.
표시하면 다음과 같은 이미지가됩니다.
슬라이더로 파라미터를 변경하면 적용된 값으로 그려진다.
Reference
이 문제에 관하여(OpenCV에서 트랙 바를 사용하여 이미지 임계 값 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TanakaSystem/items/b10572fda6f1fb7b9413
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gamma = 0.5
threshold = 28
def nothing(x):
pass
cv2.namedWindow('window')
cv2.createTrackbar('gamma','window', int(gamma*10) , 50, nothing)
cv2.createTrackbar('threshold1','window', threshold , 255, nothing)
트랙바에서 값을 가져와 이미지에 적용
import numpy as np
delay = 1
ESC_KEY = 27
while True:
# ESCキーを入力したら終了
if cv2.waitKey(delay) == ESC_KEY:
break
# トラックバーから値を取得
gamma = cv2.getTrackbarPos('gamma','window')
threshold = cv2.getTrackbarPos('threshold1','window')
if gamma > 0:
gamma /= 10
else:
gamma = 0.1
# ガンマ補正
lut = np.zeros((256, 1), dtype='uint8')
for i in range(256):
lut[i][0] = grayMax * pow(float(i)/grayMax, 1.0/gamma)
gray_gamma = cv2.LUT(gray, lut)
# 二値化
ret, threshold = cv2.threshold(gray_gamma, threshold, 255, cv2.THRESH_BINARY)
# 描画
cv2.imshow("window", threshold)
gamma는 1/10으로 한 값을 사용한다.
0은 허용되지 않기 때문에 0.1로 보정한다.
표시하면 다음과 같은 이미지가됩니다.
슬라이더로 파라미터를 변경하면 적용된 값으로 그려진다.
Reference
이 문제에 관하여(OpenCV에서 트랙 바를 사용하여 이미지 임계 값 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TanakaSystem/items/b10572fda6f1fb7b9413텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)