news 2026/6/6 11:30:48

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/6/5 9:05:45

零基础入门量化交易框架:策略开发与实战指南

零基础入门量化交易框架:策略开发与实战指南 【免费下载链接】vnpy 基于Python的开源量化交易平台开发框架 项目地址: https://gitcode.com/vnpy/vnpy Python量化交易框架为金融科技爱好者提供了构建自动化交易系统的完整解决方案。无论您是刚接触量化领域的…

作者头像 李华
网站建设 2026/6/5 0:22:01

突破传统边界:革新性Web桌面系统的跨平台实现与技术探秘

突破传统边界:革新性Web桌面系统的跨平台实现与技术探秘 【免费下载链接】macos-web 项目地址: https://gitcode.com/gh_mirrors/ma/macos-web 在数字化时代,用户对跨设备访问的需求日益增长,Web桌面系统正成为连接不同终端的关键桥梁…

作者头像 李华
网站建设 2026/5/28 13:53:52

如何从零打造智能机器人应用?探索Reachy Mini的无限可能

如何从零打造智能机器人应用?探索Reachy Mini的无限可能 【免费下载链接】reachy_mini Reachy Minis SDK 项目地址: https://gitcode.com/GitHub_Trending/re/reachy_mini 你是否想过自己动手开发一个能互动、会思考的机器人应用?Reachy Mini开发…

作者头像 李华
网站建设 2026/6/5 7:39:20

解锁Google趋势数据:pytrends实战指南

解锁Google趋势数据:pytrends实战指南 【免费下载链接】pytrends Pseudo API for Google Trends 项目地址: https://gitcode.com/gh_mirrors/py/pytrends 开篇三问:为什么选择Python获取趋势数据? 在数字化决策时代,我们…

作者头像 李华
网站建设 2026/6/1 20:22:32

动态壁纸工具完全指南:让你的桌面焕发活力

动态壁纸工具完全指南:让你的桌面焕发活力 【免费下载链接】lively Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3. 项目地址: https://gitcode.com/gh_mirrors/li/lively 你是…

作者头像 李华
网站建设 2026/5/31 14:11:05

4步打造高颜值终端:Catppuccin主题方案让命令行焕发新生

4步打造高颜值终端:Catppuccin主题方案让命令行焕发新生 【免费下载链接】iterm 🍭 Soothing pastel theme for iTerm2 项目地址: https://gitcode.com/gh_mirrors/it/iterm 每天面对单调的终端界面是否让你提不起工作兴趣?作为开发者…

作者头像 李华