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)
相关推荐
Terry Cao 漕河泾30 分钟前
SRT3D: A Sparse Region-Based 3D Object Tracking Approach for the Real World
人工智能·计算机视觉·3d·目标跟踪
多猫家庭35 分钟前
宠物毛发对人体有什么危害?宠物空气净化器小米、希喂、352对比实测
人工智能·宠物
AI完全体39 分钟前
AI小项目4-用Pytorch从头实现Transformer(详细注解)
人工智能·pytorch·深度学习·机器学习·语言模型·transformer·注意力机制
AI知识分享官40 分钟前
智能绘画Midjourney AIGC在设计领域中的应用
人工智能·深度学习·语言模型·chatgpt·aigc·midjourney·llama
程序小旭1 小时前
Objects as Points基于中心点的目标检测方法CenterNet—CVPR2019
人工智能·目标检测·计算机视觉
阿利同学1 小时前
yolov8多任务模型-目标检测+车道线检测+可行驶区域检测-yolo多检测头代码+教程
人工智能·yolo·目标检测·计算机视觉·联系 qq1309399183·yolo多任务检测·多检测头检测
CV-King1 小时前
计算机视觉硬件知识点整理(三):镜头
图像处理·人工智能·python·opencv·计算机视觉
Alluxio官方1 小时前
Alluxio Enterprise AI on K8s FIO 测试教程
人工智能·机器学习
AI大模型知识分享1 小时前
Prompt最佳实践|指定输出的长度
人工智能·gpt·机器学习·语言模型·chatgpt·prompt·gpt-3
十有久诚1 小时前
TaskRes: Task Residual for Tuning Vision-Language Models
人工智能·深度学习·提示学习·视觉语言模型