OpenCV를 사용하여 이미지 처리의 기초 [요약] Python

10477 단어 Python
opencv import 사용하기
import cv2
import numpy as np
from matplotlib import pyplot as plt
・Opencv를 통한 이미지 읽기
opencv를 통해 이미지 읽기
img = cv2.imread('apple-picuture.jpg')
· OpenCV로 처리된 이미지는numpy 배열(고도, 가로 너비, 색) 순서로 저장됩니다
img = cv2.imread('apple-picuture.jpg')
img.shape
>>>(320,320,3)
· OpenCV로 처리된 이미지는 BGR 순서대로 픽셀 값을 저장합니다.
img = cv2.imread('apple-picuture.jpg')
img[0][0]
>>>(121,23,56) (Blue,Green,Red)の順番
・ OpenCV를 통해 이미지 표시
이미지를 표시한 후 이미지를 클릭하고 키보드를 입력하면 창이 닫힙니다.
# 画像を表示する
img = cv2.imread('apple-picuture.jpg')
cv2.imshow('image',img)

# キーボード入力を待つ
cv2.waitKey(0)

# すべてウィンドウを閉じる
cv2.destroyAllWindows()
・ OpenCV를 통해 이미지 저장
이번엔 테스트야.jpg의 이름으로 같은 층에 그림을 저장합니다
성공 시 진짜로 출력
img = cv2.imread('apple-picuture.jpg')
# osをimport
import os
#画像の保存
cv2.imwrite('test.jpg',img)
>>>True
· OpenCV를 통한 크기 재조정
img = cv2.imread('apple-picuture.jpg')
img_resize = cv2.resize(img,(160,200))
img_resize.shape
>>>(200, 160, 3) (高さ,横幅,チャンネル数)
・ OpenCV 조정 매개변수 정보
cv2.resize () 의 매개 변수는 다음과 같습니다.
cv2.resize(src, dsize, fx, fy, interpolation)
fx,fy는 그림이 두 배가 된다는 것을 나타낸다
예를 들어 세로 1.5배, 가로 2배면 ①처럼
interpolation 기본값은 INTER_LINEAR이지만 다른 것도 있어요.
·INTER_NEAREST – 최근 보간
·INTER_AREA - 픽셀 영역 관계식을 사용하여 다시 샘플링합니다.그림을 대폭 축소하는 상황에서 모어 줄무늬를 피할 수 있는 방법
기다리다
크기 조정 매개변수 정보
img = cv2.imread('apple-picuture.jpg')
#①
img_resize = cv2.resize(img,(img.shape[0],img.shape[1]),1.5,2)
>>>(480,640,3) 元は(320,320,3)

#② サイズは元のまま
img_area = cv2.resize(img,(320,320),interpolation=cv2.INTER_AREA)
그레이스케일로 변환
일반적으로 이미지는 3채널 RGB, 회색도는 1채널로 표시됩니다.
장점은 연산이 3분의 1을 차지하고 이치화가 쉽다는 것이다
참고로 그레이스케일은 아래의 계산 공식이다
Gray = 0.2989R + 0.5870G + 0.1140B
그레이스케일로 변환
#1つ目
img = cv2.imread('apple-picuture.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#補足(HSVへの変換)
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

#2つ目(画像を読み込むときに2つ目の引数に0を入れるだけ)
img = cv2.imread('apple-picuture.jpg',0)
・ 직사각형의 균등화
직사각형의 균일화는 이미지를 더욱 명암하고 선명한 이미지로 전환시킬 수 있다
이번에 그레이스케일로 표시된 그림을 직사각형으로 균일화하다
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])
channnels: 그레이스케일의 경우 0
histSize: 모든 픽셀 값을 대상으로 하는 경우 [256]을 지정하는 격자선 수를 나타냅니다.
ranges: 직사각형의 픽셀 값 범위를 측정할 RANGE입니다. 일반적으로 [0256]을 지정합니다.
직사각형도 통일
img = cv2.imread('apple-picuture.jpg',0)
hist = cv2.calcHist([img],[0],None,[256],[0,256])
γ(가마) 변환
γ변환은 이미지 밝기의 변환 방법을 가리킨다
Y = 255 x ( Y ÷ 255)( 1/γ)
이것이 바로γ그것은 변환 공식이다
γ1이면 Y=x가 선(아래 그림의 1)
γ커지면 밝은 이미지, 작아지면 어두운 이미지
직사각형도 통일 img = cv2.imread('apple-picuture.jpg',0) def create_gamma_img(gamma, img): gamma_cvt = np.zeros((256,1), dtype=np.uint8) for i in range(256): gamma_cvt[i][0] = 255*(float(i)/255)**(1.0/gamma) return cv2.LUT(img, gamma_cvt) · 이치화 이치화는 어떤 한도값을 초과하면 255, 작으면 0으로 이미지를 단색으로 바꾸는 방법을 말한다. 첫 번째는 통상적으로 사용하는 이치화 방법,ret 저장 한도값 두 번째 방법은 상대적으로 밝은지 어둡은지 판단한 후에 이치화하는 것이다 이치화 img = cv2.imread('apple-picuture.jpg',0) # 첫 번째 ret , img_0 = cv2.threshold(img,0,255,cv2.THRESH_OTSU) # 두 번째 img_ada = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,3,1)

좋은 웹페이지 즐겨찾기