Opencv实现图片的边界填充和阈值处理

Opencv实现图片的边界填充和阈值处理

目录

图片的边界填充


指定颜色填充

BORDER_CONSTANT

  • 格式:cv2.copyMakeBorder(a,t,b,l,r,borderType=BORDER_CONSTANT,value=(b,g,r))
    • a:为图片变量
    • t,b,l,r :为边界长度 ,顺序是上下左右
    • borderType :可以设置边界类型 ,这里为BORDER_CONSTANT,指定颜色填充
    • value设置边界填充的颜色,色块顺序是BGR,为0-255的整数

代码展示:

python 复制代码
a = cv2.imread('at1.png')
t,b,l,r = 40,40,40,40
a_cnostant = cv2.copyMakeBorder(a,t,b,l,r,borderType=cv2.BORDER_CONSTANT,value=(255,255,255))
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_cnostant',a_cnostant)
cv2.waitKey(0)

运行结果:

镜面反射填充

  • 格式:cv2.copyMakeBorder(a,t,b,l,r,borderType=BORDER_REFLECT)
    borderType:
    • BORDER_REFLECT,镜面反射填充,交接处不删除
    • BORDER_REFLECT101,镜面反射填充,交接处删除

代码展示:

python 复制代码
a = cv2.imread('at1.png')
t,b,l,r = 70,70,70,70
a_reflect = cv2.copyMakeBorder(a,t,b,l,r,borderType=cv2.BORDER_REFLECT)
a_reflect101 = cv2.copyMakeBorder(a,t,b,l,r,borderType=cv2.BORDER_REFLECT101)
cv2.imshow('a_reflect',a_reflect)
cv2.waitKey(0)
cv2.imshow('a_reflect101',a_reflect101)
cv2.waitKey(0)

运行结果:

边界像素值替换

  • 格式:cv2.copyMakeBorder(a,t,b,l,r,borderType=BORDER_REPLICATE)
    borderType:
    • BORDER_REPLICATE,边界像素值替换,如aaaa,bbbbb类似,||||类似
    • BORDER_WRAP,上下左右相互替换为边界

代码展示:

python 复制代码
a = cv2.imread('at1.png')
t,b,l,r = 40,40,40,40
a_replicate = cv2.copyMakeBorder(a,t,b,l,r,borderType=cv2.BORDER_REPLICATE)
cv2.copyMakeBorder(a,t,b,l,r,borderType=cv2.BORDER_WRAP)
cv2.imshow('a_replicate',a_replicate)
cv2.waitKey(0)
cv2.imshow('a_wrap',a_wrap)
cv2.waitKey(0)

运行结果:

图片的阈值处理


基本格式

图片要进行阈值处理必须先转为灰度图,否则不能处理

基本格式:cv2.threshold(a,t,m,cv2.THRESH_XXXX)
a:图像变量
t:thresh数值,在0-255间,与像素值像比较
m:maxval数值,设置像素最大值,一般为255
cv2.THRESH_XXXX:XXXX决定处理类型

返回值:有两个,第一个是t(thresh数值),第二个是图像

基本类型

  • BINARY
    a的像素值> t(即图像的像素值 、thresh数值)时,取值为maxval,否则为0
  • BINARY_INV
    a的像素值> t 时,取值为maxval,否则为0
  • TRUNC
    a的像素值> t 时,取值为t(thresh值),否则为a原图像像素值
  • TOZERO
    a的像素值> t 时,a原图像像素值,否则为0
  • TOZERO_INV
    a的像素值> t 时,为0,否则为a原图像像素值

代码展示:

t 也可以自己调整修改 ,BINARY和BINARY_INV类型更突出

python 复制代码
a = cv2.imread('at1.png',0)
r1,a_binary = cv2.threshold(a,150,255,cv2.THRESH_BINARY)
r2,a_binary_inv = cv2.threshold(a,150,255,cv2.THRESH_BINARY_INV)
r3,a_trunc = cv2.threshold(a,150,255,cv2.THRESH_TRUNC)
r4,a_tozero = cv2.threshold(a,150,255,cv2.THRESH_TOZERO)
r5,a_tozero_inv = cv2.threshold(a,150,255,cv2.THRESH_TOZERO_INV)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_binary',a_binary)
cv2.waitKey(0)
cv2.imshow('a_binary_inv',a_binary_inv)
cv2.waitKey(0)
cv2.imshow('a_trunc',a_trunc)
cv2.waitKey(0)
cv2.imshow('a_tozero',a_tozero)
cv2.waitKey(0)
cv2.imshow('a_tozero_inv',a_tozero_inv)
cv2.waitKey(0)
print(r1,r2,r3,r4,r5)
cv2.destroyAllWindows()

运行结果:

相关推荐
有Li12 分钟前
CLIK-Diffusion:用于牙齿矫正的临床知识感知扩散模型|文献速递-深度学习人工智能医疗图像
人工智能·深度学习·文献·医学生
有梦想的攻城狮14 分钟前
Java 11中的Collections类详解
java·windows·python·java11·collections
前端小趴菜0520 分钟前
python - input()函数
python
大唐荣华26 分钟前
视觉语言模型(VLA)分类方法体系
人工智能·分类·机器人·具身智能
即兴小索奇28 分钟前
AI应用商业化加速落地 2025智能体爆发与端侧创新成增长引擎
人工智能·搜索引擎·ai·商业·ai商业洞察·即兴小索奇
程序员三藏36 分钟前
Selenium+python自动化测试:解决无法启动IE浏览器及报错问题
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
NeilNiu41 分钟前
开源AI工具Midscene.js
javascript·人工智能·开源
瓦尔登湖5081 小时前
DAY 40 训练和测试的规范写法
python
nju_spy1 小时前
机器学习 - Kaggle项目实践(4)Toxic Comment Classification Challenge 垃圾评论分类问题
人工智能·深度学习·自然语言处理·tf-idf·南京大学·glove词嵌入·双头gru
计算机sci论文精选1 小时前
CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
人工智能·深度学习·机器学习·计算机视觉·机器人·cvpr·具身智能