news 2026/4/3 3:00:22

opencv视觉学习——第二弹

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
opencv视觉学习——第二弹

一.图像阈值

1.格式:ret,dst = cv2.threshold(src,thresh,maxval,type)

  • src:输入图,只能输入单通道图像,通常来说为灰度图
  • dst:输出图
  • thresh:阈值
  • maxval:当像素值超过了阈值(或者小于阈值,根据 type 来决定),所赋予的值
  • type:二值化操作的类型,包含以下 5 种类型:cv2.THRESH_BINARY;cv2.THRESH_BINARY_INV;cv2.THRESH_TRUNC;cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
  • cv2.THRESH_BINARY:超过阈值部分取 maxval(最大值),否则取 0
  • cv2.THRESH_BINARY_INV:THRESH_BINARY 的反转
  • cv2.THRESH_TRUNC:大于阈值部分设为阈值,否则不变
  • cv2.THRESH_TOZERO:大于阈值部分不改变,否则设为 0
  • cv2.THRESH_TOZERO_INV:THRESH_TOZERO 的反转
    ret, thresh1 = cv2.threshold(img1_grey, 127,255,cv2.THRESH_BINARY) ret, thresh2 = cv2.threshold(img1_grey, 127,255,cv2.THRESH_BINARY_INV) ret, thresh3 = cv2.threshold(img1_grey, 127,255,cv2.THRESH_TRUNC) ret, thresh4 = cv2.threshold(img1_grey, 127,255,cv2.THRESH_TOZERO) ret, thresh5 = cv2.threshold(img1_grey, 127,255,cv2.THRESH_TOZERO_INV) titles = ['OriginalImage','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV'] images = [img1, thresh1,thresh2,thresh3,thresh4,thresh5] for i in range(6): # 创建子图(拆分逗号写法,更易读) plt.subplot(2, 3, i+1) # 绘制图像:灰度图用cmap='gray',原图已转RGB无需配色 plt.imshow(images[i], cmap='gray' if i>0 else None) # 添加标题 plt.title(titles[i]) # 修正:拆分xticks和yticks调用,取消链式错误写法 plt.xticks([]) plt.yticks([]) # 调整子图间距,避免标题/图像重叠 plt.tight_layout() # 显示图像 plt.show()

上面代码中“img1_grey”要换成自己图片的名称,示例结果如下:

二.图像平滑

1.先读入一张图片

img = cv2.imread('D:/Users/3.jpg')#路径换成自己的 cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

2.均值滤波的处理方法

——一种线性平滑滤波方法,通过计算邻域内像素的平均值替代中心像素值,降低图像噪声。

其中(3,3)是可以自己规定的选取图片窗口大小,不同的值最后呈现结果不一样。

#均值滤波 #简单的平均卷积操作 blur = cv2.blur(img, (3, 3)) cv2.imshow('blur',blur) cv2.waitKey(0) cv2.destroyAllWindows()

3.方框滤波的处理

normalize所等于的值不一样,最后结果不同,如果是True的话,是小于255,避免溢出,若等于False容易溢出,导致图像变白。

#方框滤波 #基本和均值一样,可以选择归一化 box = cv2.boxFilter(img,-1,(3,3),normalize=True) cv2.imshow('box',box) cv2.waitKey(0) cv2.destroyAllWindows()

4.高斯滤波的处理

#高斯滤波 #高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的 aussian = cv2.GaussianBlur(img,(5,5),1)#5,5是所框选的范围。5*5 cv2.imshow('aussian',aussian) cv2.waitKey(0) cv2.destroyAllWindows()

5.中值滤波的处理

#中值滤波 #相当于用中值代替 median = cv2.medianBlur(img,5)#中值滤波 cv2.imshow('median',median) cv2.waitKey(0) cv2.destroyAllWindows()

6.将所有的方法放在一起展示结果

三.形态学——腐蚀操作

1.读入图片之后,可以调整展示的窗口的大小

img = cv2.imread("D:/Users/4.jpg") new_width = 400 new_height = 300 resized_img = cv2.resize(img,(new_width,new_height)) cv2.imshow('resized_img',resized_img) cv2.waitKey(0) cv2.destroyAllWindows()

2.设置盒子以及迭代次数,来决定腐蚀的速度

kernel = np.ones((5,5),np.uint8)#内盒决定腐蚀的速度 erosion = cv2.erode(resized_img,kernel,iterations = 1)#迭代次数 cv2.imshow('erosion',erosion) cv2.waitKey(0) cv2.destroyAllWindows()

3.放在一起展示不同的迭代次数,所呈现的不同效果

kernel = np.ones((3,3),np.uint8) erosion_1 = cv2.erode(resized_img,kernel,iterations = 1) erosion_2 = cv2.erode(resized_img,kernel,iterations = 2) erosion_3 = cv2.erode(resized_img,kernel,iterations = 3) res = np.hstack((erosion_1,erosion_2,erosion_3)) cv2.imshow('res',res) cv2.waitKey(0) cv2.destroyAllWindows()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 21:17:55

QuickRecorder:革命性轻量级macOS录屏工具的颠覆性体验

QuickRecorder:革命性轻量级macOS录屏工具的颠覆性体验 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华
网站建设 2026/3/8 18:26:53

Switch模拟器Sudachi:开源游戏工具让你在电脑畅玩Switch游戏

Switch模拟器Sudachi:开源游戏工具让你在电脑畅玩Switch游戏 【免费下载链接】sudachi Sudachi is a Nintendo Switch emulator for Android, Linux, macOS and Windows, written in C 项目地址: https://gitcode.com/GitHub_Trending/suda/sudachi 想在电脑…

作者头像 李华
网站建设 2026/3/15 14:14:16

揭秘Grasscutter命令系统:从入门到架构师的实践之路

揭秘Grasscutter命令系统:从入门到架构师的实践之路 【免费下载链接】Grasscutter A server software reimplementation for a certain anime game. 项目地址: https://gitcode.com/GitHub_Trending/gr/Grasscutter 在游戏服务器管理的世界里,命令…

作者头像 李华
网站建设 2026/3/23 9:10:12

DirectX黑科技:d912pxy引发的API性能革命

DirectX黑科技:d912pxy引发的API性能革命 【免费下载链接】d912pxy DirectX9 to DirectX12 API proxy for Guild Wars 2 项目地址: https://gitcode.com/gh_mirrors/d9/d912pxy 行业痛点剖析:DirectX版本迭代的性能困局 在图形渲染技术高速迭代的…

作者头像 李华
网站建设 2026/3/30 0:54:15

7个核心策略:Scikit-learn随机森林调参实战指南

7个核心策略:Scikit-learn随机森林调参实战指南 【免费下载链接】statsmodels Statsmodels: statistical modeling and econometrics in Python 项目地址: https://gitcode.com/gh_mirrors/st/statsmodels 随机森林调参是机器学习模型优化中的关键环节&#…

作者头像 李华