opencv-py-基础操作

文章目录

阈值分割

灰度图

python 复制代码
import cv2 as cv
import numpy as np
import os
import base_function as bf

sourceImg = cv.imread("static/26.png")
# bf.cv_show("source",sourceImg)

grayImg = cv.cvtColor(sourceImg,cv.COLOR_BGR2GRAY)
bf.cv_show("grayImg",grayImg)

效果

二值化

python 复制代码
# 阈值分割 二值化 超出阈值取maxvalue,否则取0
ret,thresh1 = cv.threshold(grayImg,100,255,cv.THRESH_BINARY)
bf.cv_show("THRESH_BINARY",thresh1)

效果

二值化取反

python 复制代码
# 阈值分割 二值化取反  超出阈值取0,否则取maxvalue
ret,thresh2 = cv.threshold(grayImg,100,255,cv.THRESH_BINARY_INV)
bf.cv_show("THRESH_BINARY_INV",thresh2)

效果

截取

python 复制代码
# 阈值分割 截取  超过阈值的部分设置成阈值,否则不变(第三个参数没用,但是必须有,随便给个数值就行)
ret,thresh3 = cv.threshold(grayImg,100,0,cv.THRESH_TRUNC)
bf.cv_show("THRESH_TRUNC",thresh3)

效果

TOZERO

python 复制代码
# 阈值分割 TOZERO  超过阈值的部分设置成0,否则不变(第三个参数没用,但是必须有,随便给个数值就行)
# 让超出阈值的部分变得更黑,边缘更清晰
ret,thresh4 = cv.threshold(grayImg,100,255,cv.THRESH_TOZERO)
bf.cv_show("THRESH_TRUNC",thresh4)

效果

TOZERO取反

python 复制代码
# 阈值分割 TOZERO_INV  超过阈值的部分不变,否则设置成0(第三个参数没用,但是必须有,随便给个数值就行)
# 让小于阈值的部分变得更黑,边缘更清晰
ret,thresh4 = cv.threshold(grayImg,100,255,cv.THRESH_TOZERO_INV)
bf.cv_show("THRESH_TRUNC",thresh4)

效果

滤波

均值滤波

python 复制代码
from math import fabs
import cv2 as cv
import numpy as np
import base_function as bf
source = cv.imread("static/1.png")
cv.imshow("source",source)
cv.waitKey(1000)
cv.destroyAllWindows()

blur = cv.blur(source,(5,5))
bf.cv_show("blur",blur)

高斯滤波

python 复制代码
# 高斯滤波
# sigmaX和sigmaY参数控制了高斯核函数在X和Y方向上的标准差,标准差越大,意味着像素值的变化范围越大,从而使得高斯核的权重分布范围更广,影响范围更大。
# 当sigmaX和sigmaY的值较小时,高斯核的权重主要集中在中心像素周围,这样可以保留更多的细节信息,图像看起来更加清晰。
# 相反,当sigmaX和sigmaY的值较大时,高斯核的权重分布范围更广,会模糊图像,因为更多的像素被纳入平滑处理,从而导致图像变得模糊。
# 因此,通过调节sigmaX和sigmaY的值,可以控制高斯滤波的平滑程度和模糊效果,以适应不同的图像处理需求。
gus = cv.GaussianBlur(source,(5,5),5)
bf.cv_show("gus",gus)

中值滤波

python 复制代码
# 中值滤波
# 特别适合处理图像中的椒盐噪点
middle =  cv.medianBlur(source,5)
bf.cv_show("middle",middle)

图像拼接

简单的横向和纵向拼接

python 复制代码
# 直接拼接(横向)
all = cv.hconcat([blur,gus,middle])
bf.cv_show("all",all)
# 直接拼接(纵向)
allv = cv.vconcat([blur,gus,middle])
bf.cv_show("allv",allv)

效果(三幅图片分别是均值滤波,高斯滤波,中值滤波)

腐蚀与膨胀

python 复制代码
import cv2 as cv
import base_function as bf
import numpy as np

# --- 字体设置 ---
position = (10, 50) # 左上角起始点的坐标
font = cv.FONT_HERSHEY_SIMPLEX
scale = 1
color = (255, 255, 255) # BGR颜色值(白色)
thickness = 2
# --- end字体设置 ---

source = cv.imread("static/26.png")
gray = cv.cvtColor(source,cv.COLOR_BGR2GRAY)
# bf.cv_show("gray",gray)

kernel =  np.ones((7,7),np.uint8)  
#二值化取反
ret,binary = cv.threshold(gray,100,255,cv.THRESH_BINARY_INV)

# 腐蚀图片
erode = cv.erode(binary,kernel,iterations=1) 
# bf.cv_show("erode",erode)

# 膨胀图片
dilate = cv.dilate(erode,kernel,iterations=1)

# 开运算 先腐蚀后膨胀
open = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
# 闭运算 先膨胀后腐蚀
close = cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel)

cv.putText(gray,"gray",position,font,scale,color,thickness)
cv.putText(binary,"binary",position,font,scale,color,thickness)
cv.putText(erode,"erode",position,font,scale,color,thickness)
cv.putText(dilate,"dilate",position,font,scale,color,thickness)
cv.putText(open,"open",position,font,scale,color,thickness)
cv.putText(close,"close",position,font,scale,color,thickness)
all =np.vstack((np.hstack((gray,binary,erode)) ,np.hstack((dilate,open,close))))
bf.cv_show("all",all)
相关推荐
FII工业富联科技服务1 小时前
Omniverse + Isaac Teleop + 合成数据:工业富联机器人大脑训练+执行落地闭环拆解
大数据·人工智能·深度学习·机器学习·机器人·制造·具身智能
东风破_1 小时前
大模型格式化输出
人工智能
Shockang2 小时前
AI 研究偏好模型
人工智能
ZGIAI2 小时前
律师最贵的不是知识,是时间:哪些工作真的可以先交给 Agent?
人工智能·架构
东风破_2 小时前
讲透 SSE:从流式响应到 LangChain model.stream()
人工智能
β添砖java3 小时前
深度学习31注意力机制、注意力分数、使用注意力机制的seq2seq、自注意力
人工智能·深度学习
ZGIAI3 小时前
销售团队最缺的不是另一个 AI,而是有人把跟进这件事一直做下去
人工智能·架构
隔窗听雨眠3 小时前
MCP会成为Agentic AI的标准吗?技术演进、生态博弈与标准之路的深度分析
人工智能
2601_967659883 小时前
2026年多个网页快速提取重点、自动汇总、对比并整理成表格的AI工具清单
人工智能
IT古董3 小时前
AI资讯日报|2026年9月5日:GPT-6 Astra全量推送却遭“翻车“,奥特曼紧急致歉一天12条大新闻:OpenAI翻车、英伟达收购、最狠AI法案出台
人工智能