| ret, dst = cv2.threshold(src, thresh, maxval, type) |
| |
| src: 输入图,只能输入单通道图像,通常来说为灰度图 |
| thresh: 阈值 |
| dst: 输出图 |
| ret: 阈值 |
| maxval: 当像素值超过了阈值 ( 或者小于阈值,根据 type 来决定 ),所赋予的值 |
| type:二值化操作的类型,包含以下5种类型: |
| cv2.THRESH_BINARY 超过阈值部分取maxval ( 最大值 ),否则取0 |
| cv2.THRESH_BINARY_INV THRESH_BINARY的反转 |
| cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变 |
| cv2.THRESH_TOZERO 大于阈值部分不改变,否则设为0 |
| cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转 |
| import cv2 |
| import matplotlib.pyplot as plt |
| import numpy as np |
| |
| |
| %matplotlib inline |
| |
| img = cv2.imread('01_Picture/01_cat.jpg',cv2.IMREAD_COLOR) |
| img_gray = cv2.imread('01_Picture/01_cat.jpg',cv2.IMREAD_GRAYSCALE) |
| ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY) |
| print(ret) |
| ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV) |
| print(ret) |
| ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC) |
| print(ret) |
| ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO) |
| print(ret) |
| ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV) |
| print(ret) |
| |
| titles = ['original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV'] |
| images = [img, thresh1, thresh2, thresh3, thresh4, thresh5] |
| |
| for i in range(6): |
| plt.subplot(2,3,i+1), plt.imshow(images[i],'gray') |
| plt.title(titles[i]) |
| plt.xticks([]),plt.yticks([]) |
| plt.show() |
-
执行结果

-
平滑处理:均值滤波
| import cv2 |
| import matplotlib.pyplot as plt |
| import numpy as np |
| |
| |
| %matplotlib inline |
| |
| img = cv2.imread('01_Picture/04_LenaNoise.png') |
| cv2.imshow('img',img) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |
| |
| |
| |
| |
| blur = cv2.blur(img,(3,3)) |
| cv2.imshow('blur',blur) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |
- 执行结果


| |
| |
| |
| |
| box = cv2.boxFilter(img,-1,(3,3),normalize=True) |
| cv2.imshow('box',box) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |
- 执行结果

| |
| |
| |
| box = cv2.boxFilter(img,-1,(3,3),normalize=False) |
| cv2.imshow('box',box) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |

| |
| |
| |
| aussian = cv2.GaussianBlur(img,(5,5),1) |
| cv2.imshow('aussian',aussian) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |

| |
| |
| |
| median = cv2.medianBlur(img,5) |
| cv2.imshow('median',median) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |

| |
| |
| res = np.hstack((blur,aussian,median)) |
| |
| print(res) |
| cv2.imshow('median vs average', res) |
| cv2.waitKey(0) |
| cv2.destroyAllWindows() |
| [[[125 137 226] |
| [128 137 225] |
| [129 137 224] |
| ..., |
| [122 145 230] |
| [110 130 221] |
| [ 90 99 200]] |
| |
| [[125 137 226] |
| [128 137 225] |
| [129 137 224] |
| ..., |
| [122 145 230] |
| [110 130 221] |
| [ 90 99 200]] |
| |
| [[125 137 226] |
| [128 137 225] |
| [129 137 224] |
| ..., |
| [122 145 230] |
| [110 130 221] |
| [ 90 99 200]] |
| |
| ..., |
| [[ 81 47 103] |
| [ 81 50 106] |
| [ 60 25 90] |
| ..., |
| [ 79 67 173] |
| [ 79 67 174] |
| [ 81 68 177]] |
| |
| [[ 80 47 102] |
| [ 81 50 106] |
| [ 74 26 90] |
| ..., |
| [ 81 70 177] |
| [ 81 70 177] |
| [ 81 71 179]] |
| |
| [[ 57 22 82] |
| [ 59 25 87] |
| [ 75 27 90] |
| ..., |
| [ 81 71 177] |
| [ 81 71 179] |
| [ 81 73 181]]] |
点击查看详情

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App