Skip to content

Commit 9dcd7cf

Browse files
Joseph FanJoseph Fan
authored andcommitted
ch10: edit bitwaise_and in image overlap
1 parent 93d6b83 commit 9dcd7cf

11 files changed

Lines changed: 92 additions & 2 deletions

File tree

14 KB
Loading

ch10-图像上的算术运算/10.bitwise_and.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,49 @@
99
img1 = cv2.imread('../data/messi5.jpg')
1010
img2 = cv2.imread('../data/opencv_logo.png')
1111

12+
img1_copy = img1.copy()
13+
1214
# I want to put logo on top-left corner, So I create a ROI
15+
img2 = cv2.resize(img2, (300, 300))
1316
rows, cols, channels = img2.shape
1417
roi = img1[0:rows, 0:cols]
1518

1619
# Now create a mask of logo and create its inverse mask also
1720
img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
18-
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
21+
ret, mask = cv2.threshold(img2gray, 220, 255, cv2.THRESH_BINARY_INV)
1922
mask_inv = cv2.bitwise_not(mask)
2023

24+
cv2.imshow('mask', mask)
25+
cv2.imshow('mask_inv', mask_inv)
26+
2127
# Now black-out the area of logo in ROI
2228
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv) # opencv 3.0
23-
#TODO error
2429

2530
# Take only region of logo from logo image.
2631
img2_fg = cv2.bitwise_and(img2, img2, mask=mask)
2732

33+
cv2.imshow('img1_bg', img1_bg)
34+
cv2.imshow('img2_fg', img2_fg)
35+
2836
# Put logo in ROI and modify the main image
2937
dst = cv2.add(img1_bg, img2_fg)
3038
img1[0:rows, 0:cols] = dst
3139

3240
cv2.imshow('res', img1)
41+
# logo in ROI -> image
42+
43+
cv2.imshow('img1_copy', img1_copy)
44+
roi_add = img1_copy[0:rows, 0:cols]
45+
# logo ROI overlap
46+
roi_add = cv2.addWeighted(roi_add, 0.5, img2, 0.5, 0)
47+
cv2.imshow('roi_add', roi_add)
48+
# take only region of add log from log image
49+
img2_fg_add = cv2.bitwise_and(roi_add, roi_add, mask=mask)
50+
dst_add = cv2.add(img1_bg, img2_fg_add)
51+
img1_copy[0:rows, 0:cols] = dst_add
52+
cv2.imshow('dst_add', img1_copy)
53+
54+
3355
cv2.waitKey(0)
3456
cv2.destroyAllWindows()
3557

opencv-demo/3D-Matplotlib.png

92.2 KB
Loading

opencv-demo/cr_irina.png

77.6 KB
Loading

opencv-demo/image_overlap.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import cv2
2+
import numpy as np
3+
import matplotlib.pyplot as plt
4+
5+
# 500 x 250
6+
img1 = cv2.imread('3D-Matplotlib.png')
7+
img2 = cv2.imread('mainsvmimage.png')
8+
img3 = cv2.imread('mainlogo.png')
9+
10+
add = img1+img2
11+
add_cv = cv2.add(img1, img2)
12+
# cv2.imshow('add',add)
13+
print(img1[102, 110, 1])
14+
print(img2[102, 110, 1])
15+
print(add[102, 110, 1])
16+
print(add_cv[102, 110, 1])
17+
18+
# weighted = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)
19+
# cv2.imshow('weighted', weighted)
20+
21+
rows, cols, channels = img3.shape
22+
roi = img1[0:rows, 0:cols]
23+
24+
img3gray = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)
25+
26+
27+
ret, mask = cv2.threshold(img3gray, 220, 255, cv2.THRESH_BINARY_INV)
28+
29+
30+
mask_inv = cv2.bitwise_not(mask)
31+
32+
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
33+
img3_fg = cv2.bitwise_and(img3, img3, mask=mask)
34+
35+
36+
cv2.imshow('img3gray', img3gray)
37+
cv2.imshow('mask', mask)
38+
cv2.imshow('img1_bg', img1_bg)
39+
cv2.imshow('img3_fg', img3_fg)
40+
41+
dst = cv2.add(img1_bg, img3_fg)
42+
cv2.imshow('dst', dst)
43+
44+
45+
img1[0:rows, 0:cols] = dst
46+
cv2.imshow('res', img1)
47+
48+
49+
cv2.waitKey(0)
50+
cv2.destroyAllWindows()

opencv-demo/mainlogo.png

5.87 KB
Loading

opencv-demo/mainsvmimage.png

21.2 KB
Loading

opencv-demo/output.avi

5.55 KB
Binary file not shown.

opencv-demo/video_show.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import numpy as np
2+
import cv2
3+
4+
cap = cv2.VideoCapture(1)
5+
fourcc = cv2.VideoWriter_fourcc(*'XVID')
6+
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
7+
8+
while(True):
9+
ret, frame = cap.read()
10+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
11+
out.write(frame)
12+
cv2.imshow('frame',gray)
13+
if cv2.waitKey(1) & 0xFF == ord('q'):
14+
break
15+
16+
cap.release()
17+
out.release()
18+
cv2.destroyAllWindows()

0 commit comments

Comments
 (0)