OpenCV ビット処理

OpenCVのビット処理
タイトル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import numpy as np
import cv2
 
# Load two images
img1 = cv2.imread('roi.jpg')
img2 = cv2.imread('opencv.png')
 
# I want to put logo on top-left corner, So I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
 
# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
 
cv2.imshow('img2gray',img2gray)
cv2.waitKey(0)
 
#関数は cv2.threshold を使います.第1引数は入力画像で
#グレースケール画像でなければいけません .
#第2引数はしきい値で,画素値を識別するために使われます.
#第3引数は最大値でしきい値以上(指定するフラグ次第では以下)
#の値を持つ画素に対して割り当てられる値です.
#OpenCVは幾つかのしきい値処理を用意しており,
#第4引数にて指定します.以下がフラグの一覧です:
#
#cv2.THRESH_BINARY
#cv2.THRESH_BINARY_INV
#cv2.THRESH_TRUNC
#cv2.THRESH_TOZERO
#cv2.THRESH_TOZERO_INV
 
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
 
cv2.imshow('mask',mask)
cv2.waitKey(0)
 
mask_inv = cv2.bitwise_not(mask)
 
cv2.imshow('mask_inv',mask_inv)
cv2.waitKey(0)
 
#cv2.bitwise_and(画像1,画像2,mask = マスク画像)
#画像1と画像2が同じ画像の場合、andをとっても同じ値
 
# Now black-out the area of logo in ROI
img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
 
cv2.imshow('img1_bg',img1_bg)
cv2.waitKey(0)
 
# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,img2,mask = mask)
 
cv2.imshow('img2_fg',img2_fg)
cv2.waitKey(0)
 
 
# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
 
cv2.imshow('dst',dst)
cv2.waitKey(0)
 
img1[0:rows, 0:cols ] = dst
 
cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

VB.net Dictionaryクラスの初期化