opencv(三)边界填充、图像融合、图像阈值处理

这篇具有很好参考价值的文章主要介绍了opencv(三)边界填充、图像融合、图像阈值处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、边界填充

  • 边界填充就是将图片按一定的方法将图片的四周向外填充并将图片放大
  • 因为opencv中的颜色通道不是RGB而是BGR,所以我们要用到之前讲到的分割将颜色通道重新整合成RGB后再用matplotlib库将其画出
import cv2
import matplotlib.pyplot as plt
import numpy as np
# 导入图片
img = cv2.imread('cat.jpg')
img = img[200:600,200:700]
b,g,r = cv2.split(img)
img = cv2.merge((r,g,b))
top_size,bottom_size,left_size,right_size = (50,50,50,50)
# 边界填充
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_CONSTANT)
# 分别展示看到不同的效果
plt.subplot(231),plt.imshow(img,'gray'),plt.title('ORIGINAL')	#原图
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()
  • BORDER_REPLICATE : 复制法,也就是复制最边缘像素
  • BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制
  • BORDER_REFLECT_101:反射法,也就是仪最边缘像素为轴,对称
  • BORDER_WRAP:外包装法
  • BORDER_CONSTANT:常量法,常数值填充

各个方法效果展示如下:

opencv(三)边界填充、图像融合、图像阈值处理,opencv入门,opencv,人工智能,计算机视觉,python

二、图像的融合

  • cv2.resize(img,(长,高))
  • cv2.addWeighted(img1,alpha1,img2,alpha2,b)
    • alpha是权重,b为偏置项
    • 公式为img = a1 ∗ * img1 + a2 ∗ * img2 + b
    • 形成新的图像
  • 图像融合时一定要保持两张图片的大小一样
# 展示图片函数
import cv2
import numpy as np
def show_img(name,img_path):
    cv2.imshow(name,img_path)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
import cv2
import matplotlib.pyplot as plt
import numpy as np
import show_img		#该包为自己写的展示图片功能
cat = cv2.imread('cat.jpg')
dog = cv2.imread('dog.jpg')
# print(cat+dog)	#查看两张图片的大小(不一样大会报错提示)
cat = cv2.resize(cat,(889,500))	#调整两张图片大小一致(将大图片改小)
# 图像融合
add_img = cv2.addWeighted(cat,0.4,dog,0.6,0)
show_img.show_img('add',add_img)	#展示图片(可自己写展示图片那几行代码)
  • 最终将猫和狗分别按一定的比例将其融合到一起。

opencv(三)边界填充、图像融合、图像阈值处理,opencv入门,opencv,人工智能,计算机视觉,python文章来源地址https://www.toymoban.com/news/detail-832947.html

三、 图像阈值

  • ret,dst = cv2.threshold(src,thresh,maxval,type)
    • src:输入图,只能输入单通道图像,通常来说为灰度图
    • dst:输出图
    • thresh:阈值
    • maxval:当像素点超过了阈值(或者小于阈值,根据type来决定),所赋予的值
    • type:二值化操作的类型,包含一下五种类型:
      • cv2.THRESH_BINARY:超过阈值部分取maxval,否则为0
      • cv2.THRESH_BINARY_INV:上一个的反转
      • cv2.THRESH_TRUNC:大于阈值部分设为阈值,否则不变
      • cv2.THRESH_TOZERO:大于阈值部分不改变,否则为0
      • cv2.THRESH_TOZERO_INV:上一个的反转
import cv2
import show_img
import matplotlib.pyplot as plt
import numpy as np

cat = cv2.imread('../data/cat.jpg')
cat = cat[200:700,200:700,:]	#原图太大了,这里只展示部分效果
cat_gray = cv2.imread('../data/cat.jpg',cv2.IMREAD_GRAYSCALE) #变成灰色图
cat_gray = cat_gray[200:700,200:700]
# show_img.show_img('cat',cat)
#调整颜色通道
b,g,r = cv2.split(cat)
cat = cv2.merge((r,g,b))
#图像阈值处理
ret,thresh1 = cv2.threshold(cat_gray,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(cat_gray,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(cat_gray,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(cat_gray,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(cat_gray,127,255,cv2.THRESH_TOZERO_INV)

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [cat,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()
  • 效果展示(别忘了0是黑255是白哦)
    opencv(三)边界填充、图像融合、图像阈值处理,opencv入门,opencv,人工智能,计算机视觉,python

到了这里,关于opencv(三)边界填充、图像融合、图像阈值处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV 入门教程:全局阈值处理

    全局阈值处理是图像处理中常用的技术之一,用于将图像转换为二值图像,从而提取感兴趣的目标区域。在 OpenCV 中,全局阈值处理可以通过简单的像素比较来实现。本文将以全局阈值处理为中心,为你介绍使用 OpenCV 进行二值图像处理的基本步骤和实例。 😃😄 ❤️ ❤️

    2024年02月13日
    浏览(33)
  • OpenCV入门系列2:图像叠加、填充和腐蚀

    在系列1中已经初步了解图像的组成并通过OpenCV函数对图片的组成进行了验证,接下来将学习图像基本的操作函数,包括图像的叠加、填充和腐蚀。 已知图像是由其像素点颜色通道的数据组成,而图像之所以不同,就是因为像素点内数据不同。因此,若要将两图像进行叠加,

    2024年02月05日
    浏览(28)
  • OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以 框选出下图箱子为目的( 图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS: 本文参考了好多大佬分享的理论知识, 在此先感谢大佬的分享~~ 首先是梳理一下流程, 下图是

    2024年02月07日
    浏览(34)
  • 我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)

    例如,设定阈值为127,然后:  将图像内所有像素值大于 127 的像素点的值设为 255。  将图像内所有像素值小于或等于 127 的像素点的值设为 0。 cv2.threshold() 和 cv2.adaptiveThreshold() 是 OpenCV 中用于实现阈值处理的两个函数,它们之间有以下区别: 1.1.1. cv2.threshold(): 这个函数

    2024年02月05日
    浏览(40)
  • 数字图像处理 基于OpenCV的景深融合算法

            景深 合成是对显微镜头连续变焦时采集的非平面物体的图像序列进行分析,提取序列里每一帧图像中聚焦相对清晰的区域,然后对这些区域按其位置进行聚焦清晰度竞争、图像 融合 ,形成一幅新的各区域都清晰的全 景深 的图像。         这里算法的前提是图像

    2024年02月14日
    浏览(34)
  • DrGraph原理示教 - OpenCV 4 功能 - 边界填充

    今天简单来看一下OpenCV中的边界填充 这里的核心就是理解borderType,具体就是 具体的理解: 其实不用记,实验一下就了解 OpenCV 4 功能 - 边界填充 发现两个问题: 图像宽度不为4的倍数时,画出会有错位现象 选择的颜色,B与R通道反了 这些问题,OpenCV肯定是不会改的,那就自

    2024年01月22日
    浏览(36)
  • Opencv C++ SIFT特征提取(单图像,多图像)+如何设置阈值+如何对文件夹进行批处理+如何设置掩膜裁剪影像

    SIFT(Scale-Invariant Feature Transform)是一种用于图像处理和计算机视觉的特征提取算法。由David Lowe于1999年首次提出,它是一种非常有效的局部特征描述符,具有尺度不变性、旋转不变性和对部分遮挡的鲁棒性。 SIFT特征提取的主要步骤包括: 尺度空间极值检测(Scale-Space Extrem

    2024年01月19日
    浏览(33)
  • C++&Python&C# 三语言OpenCV从零开发(6):边界填充+Csharp调用Python matplotlib代码

    C++PythonCsharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料+课件笔记) 今天来接着学习OpenCV,现在主要是以Python代码为主了,所以先实现Python,在用C++/Csharp重现一遍。 边界填充就是向外填充图片信息,将图片扩大。填充分为上下

    2024年01月23日
    浏览(48)
  • opencv(20) 图像阈值(二值化)

    二值化核心思想,设阈值,大于阈值的为0(黑色)或 255(白色),使图像称为黑白图。 阈值可固定,也可以自适应阈值。 自适应阈值一般为一点像素与这点为中序的区域像素平均值或者高斯分布加权和的比较,其中可以设置一个差值也可以不设置。 图像的阈值化旨在提取

    2024年02月02日
    浏览(38)
  • OpenCV阈值处理(threshold函数、自适应阈值处理、Otsu处理)

    目录 阈值处理 一.threshold函数 1.二值化阈值处理(cv2.THRESH_BINARY) 2.反二值化阈值处理( cv2.THRESH_BINARY_INV) 3.截断阈值化处理(cv2.THRESH_TRUNC) 4.超阈值零处理(cv2.THRESH_TOZERO_INV) 5.低阈值零处理(cv2.THRESH_TOZERO)  二.自适应阈值处理  三.Otsu处理 阈值处理是指剔除图像内像素

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包