산술 연산자
개요
우리는 두 영상에서 함수 (cv.add ()) 또는 단순 연산 NumPy와 (입술을 img1 = + IMG2) OpenCV의 동작을 할 수있다. 두 개의 깊이 이미지와 형태가 동일해야하거나 화상만을 제 스칼라 값일 수있다 (각각의 이미지를 저장하기 위해 사용되는 비트 수는, 화상 농도의 각각의 픽셀은 컬러 화상 색의 수있을 수 있다고 판단).
그러나 OpenCV의 추가 및 NumPy와 추가 차이가있다. OpenCV의 가산 동작 NumPy와 가산은 모듈로 연산이다 포화된다.
예를 들면 :
오기 CV AS CV2가 가져 오기 NP AS NumPy와 X = np.uint8 ([250 ]) # 부호없는 8 비트 정수는 [0, 255]의 범위의 정수를 나타내고, Y = np.uint8 ([10 ]) 이 전단 (CV있다. 추가 (X, Y)) # 250 = + 10 = 260> [255] 인쇄 (X + Y) # 250 = 10 + 256 = 260 .. 4 % => [. 4]
이미지 연산
정의 :
SRC1 : 첫번째 이미지
SRC2 : 두 번째 이미지
DST : 목적지, 목적지 이미지, 사전에 공간을 할당 할 필요가 생략 될 수있다
마스크 : 8 비트 단일 채널 어레이 소자는 출력 배열의 변화를 지정한다.
규모 : 확장 비율
DTYPE : 출력 배열의 깊이는 기본적으로 동일하다 -1
DST = cv.add (SRC1, SRC2 [DST [마스크 [DTYPE]])
DST = cv2.subtract (SRC1, SRC2, DST, 마스크 DTYPE)
DST = cv2.multiply (SRC1, SRC2, DST, 스케일 DTYPE) DST = 스케일 *의 * SRC1, SRC2
DST = cv2.divide (SRC1, SRC2, DST, 스케일 DTYPE) DST = * 스케일의 SRC1 / SRC2
예를 들면 :
오기 CV AS CV2 오기 NP AS NumPy와 IMG1 = cv.imread ( ' 1.JPG ' ) #의 화상. 1 IMG2 cv.imread = ( ' 2.JPG ' ) #의 이미지 2 추가 = cv.add (IMG1, IMG2) # 두 화상 가산 감산 = cv.subtract (IMG1, IMG2) # 두 화상 감산 곱하기 = cv.multiply (IMG1, IMG2) # 1 개의 화상을 곱한 = cv.divide (IMG1, IMG2)에 나누어 # 두 이미지 분할 cv.imshow ( " 테스트 " , 추가)
이미지 혼합
이것은 또한 추가 된 이미지입니다,하지만 서로 다른 무게의 이미지에, 그래서 사람들 혼합 또는 투명의 느낌을 준다. 공식 다음과 같은 이미지를 추가합니다 :
D S t = ⋅ 내가 해요 g 1 + B ⋅ I m의 g 2 + C
DST = cv.addWeighted (SRC1, α, SRC2, β-, γ- [DST [DTYPE])
매개 변수 :
SRC1 : 첫 번째 이미지
appha : 첫 번째 배열 요소 무게를 차지
SRC2 : 제 화상
베타 : 두 번째 배열 요소 무게를 차지
감마 : 스칼라 및 각 추가
DST는 : 입력과 출력 어레이 배열은 채널과 동일한 크기와 개수를
DTYPE :
가져올 순이익으로 NumPy와 수입 이력서로 CV2 데프 아무것도 (X) : 전달되지 # 블랙 화상, 윈도우 생성 을 img1 = np.zeros ((300, 528, 3 ) np.uint8) IMG2 = cv.imread를 ( " 2. JPG " ) cv.namedWindow ( ' 상 ' ) # 1 색 변경 용 trackbars 생성 cv.createTrackbar ( ' 변경 ' , ' 상 ' , 0, 1 , 아무것도) 동안 (1 ) K = cv.waitKey (1)은 0xFF 만약 K의 == 27: 휴식 #이 네 trackbars의 현재 위치를 얻을 (=의 cv.getTrackbarPos 변경 ' 변화 ' , ' 이미지 ' ) DST = cv.addWeighted (img1로, 변경, IMG2, 1 변화, 0) cv.imshow ( " 이미지 " , DST ) cv.destroyAllWindows ()
논리 연산자 (이후 업데이트)