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)
相关推荐
齐齐大魔王19 分钟前
COCO 数据集
人工智能·机器学习
AI营销实验室1 小时前
原圈科技AI CRM系统赋能销售新未来,行业应用与创新点评
人工智能·科技
爱笑的眼睛112 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
tap.AI2 小时前
RAG系列(一) 架构基础与原理
人工智能·架构
北邮刘老师2 小时前
【智能体互联协议解析】北邮ACPs协议和代码与智能体互联AIP标准的关系
人工智能·大模型·智能体·智能体互联网
亚马逊云开发者2 小时前
使用Amazon Q Developer CLI快速构建市场分析智能体
人工智能
Coding茶水间2 小时前
基于深度学习的非机动车头盔检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
Rose sait2 小时前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
福客AI智能客服3 小时前
从被动响应到主动赋能:家具行业客服机器人的革新路径
大数据·人工智能
司南OpenCompass3 小时前
衡量AI真实科研能力!司南科学智能评测上线
人工智能·多模态模型·大模型评测·司南评测