diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/bird.png" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/bird.png" new file mode 100644 index 0000000000000000000000000000000000000000..4d354e299570cdf51ca260ec4c6749177737bc55 Binary files /dev/null and "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/bird.png" differ diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.md" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.md" new file mode 100644 index 0000000000000000000000000000000000000000..095b963824305df06e2797385bfd67171c3ff562 --- /dev/null +++ "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.md" @@ -0,0 +1,72 @@ +# 小鸊鷉橡皮擦(II) + +OpenCV 里先膨胀再腐蚀操作叫做“闭运算”。小鸊鷉(pi ti)的名片被小朋友画了几笔,尝试通过先腐蚀再膨胀修复,完成任务 + +![](./img_closed.jpeg) + +框架代码如下: + +```python +import numpy as np +import cv2 + +def close_op(img): + # TODO(You): 请在此实现代码 + +if __name__ == '__main__': + img_origin = cv2.imread('bird.png', cv2.COLOR_BGR2LAB) + + img_opened = open_op(img_origin) + + img_all = np.concatenate((img_origin, img_opened), axis=1) + cv2.imwrite('img_opened.jpeg', img_all) + cv2.imshow('img: origin, erosion and dilation', img_all) + + cv2.waitKey(0) + cv2.destroyAllWindows() + +``` + +下面对开运算函数`def close_op(img):`实现正确的是? + +## 答案 + +```python +def close_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.dilate(img, kernel, iterations=1) + img2 = cv2.erode(img1, kernel, iterations=1) + return img2 +``` + +## 选项 + +### 都是对原图操作 + +```python +def close_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.dilate(img, kernel, iterations=1) + img2 = cv2.erode(img, kernel, iterations=1) + return img2 +``` + +### 顺序不对 + +```python +def close_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.erode(img, kernel, iterations=1) + img2 = cv2.dilate(img1, kernel, iterations=1) + return img2 +``` + +### 返回错误 + +```python +def close_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.dilate(img, kernel, iterations=1) + img2 = cv2.erode(img1, kernel, iterations=1) + return img1 +``` diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.py" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.py" new file mode 100644 index 0000000000000000000000000000000000000000..13fa68d796787fb910646f6b3cbc8717fe5e47c5 --- /dev/null +++ "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/close.py" @@ -0,0 +1,22 @@ +import numpy as np +import cv2 + + +def close_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.dilate(img, kernel, iterations=1) + img2 = cv2.erode(img1, kernel, iterations=1) + return img2 + + +if __name__ == '__main__': + img_origin = cv2.imread('bird.png', cv2.COLOR_BGR2LAB) + + img_closed = close_op(img_origin) + + img_all = np.concatenate((img_origin, img_closed), axis=1) + cv2.imwrite('img_closed.jpeg', img_all) + cv2.imshow('img: origin, erosion and dilation', img_all) + + cv2.waitKey(0) + cv2.destroyAllWindows() diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_closed.jpeg" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_closed.jpeg" new file mode 100644 index 0000000000000000000000000000000000000000..8c57c6a48fbb5ec744f9704ee370ca41be005fb2 Binary files /dev/null and "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_closed.jpeg" differ diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_opened.jpeg" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_opened.jpeg" new file mode 100644 index 0000000000000000000000000000000000000000..9f1f7158a3423ac253f999e157c98585b1faea2b Binary files /dev/null and "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/img_opened.jpeg" differ diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.md" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.md" new file mode 100644 index 0000000000000000000000000000000000000000..911a3e62af2b6a7f0badd28ade897e3a27423b93 --- /dev/null +++ "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.md" @@ -0,0 +1,72 @@ +# 小鸊鷉橡皮擦(I) + +OpenCV 里先腐蚀再膨胀操作叫做“开运算”。小鸊鷉(pi ti)的名片被小朋友画了几笔,尝试通过先腐蚀再膨胀修复,效果不明显 + +![](./img_opened.jpeg) + +框架代码如下: + +```python +import numpy as np +import cv2 + +def open_op(img): + # TODO(You): 请在此实现代码 + +if __name__ == '__main__': + img_origin = cv2.imread('bird.png', cv2.COLOR_BGR2LAB) + + img_opened = open_op(img_origin) + + img_all = np.concatenate((img_origin, img_opened), axis=1) + cv2.imwrite('img_opened.jpeg', img_all) + cv2.imshow('img: origin, erosion and dilation', img_all) + + cv2.waitKey(0) + cv2.destroyAllWindows() + +``` + +下面对开运算函数`def open_op(img):`实现正确的是? + +## 答案 + +```python +def open_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.erode(img, kernel, iterations=1) + img2 = cv2.dilate(img1, kernel, iterations=1) + return img2 +``` + +## 选项 + +### 都是对原图操作 + +```python +def open_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.erode(img, kernel, iterations=1) + img2 = cv2.dilate(img, kernel, iterations=1) + return img2 +``` + +### 顺序不对 + +```python +def open_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.dilate(img, kernel, iterations=1) + img2 = cv2.erode(img1, kernel, iterations=1) + return img2 +``` + +### 返回错误 + +```python +def open_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.erode(img, kernel, iterations=1) + img2 = cv2.dilate(img1, kernel, iterations=1) + return img1 +``` diff --git "a/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.py" "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.py" new file mode 100644 index 0000000000000000000000000000000000000000..bcf817c1814f983fe447a664531b022c0163d070 --- /dev/null +++ "b/data/1.OpenCV\345\210\235\351\230\266/2.\344\272\214\345\200\274\345\233\276\345\203\217\345\244\204\347\220\206/3.\345\274\200\350\277\220\347\256\227\344\270\216\351\227\255\350\277\220\347\256\227/open.py" @@ -0,0 +1,22 @@ +import numpy as np +import cv2 + + +def open_op(img): + kernel = np.ones((3, 3), np.uint8) + img1 = cv2.erode(img, kernel, iterations=1) + img2 = cv2.dilate(img1, kernel, iterations=1) + return img2 + + +if __name__ == '__main__': + img_origin = cv2.imread('bird.png', cv2.COLOR_BGR2LAB) + + img_opened = open_op(img_origin) + + img_all = np.concatenate((img_origin, img_opened), axis=1) + cv2.imwrite('img_opened.jpeg', img_all) + cv2.imshow('img: origin, erosion and dilation', img_all) + + cv2.waitKey(0) + cv2.destroyAllWindows()