图像处理项目_自定义边缘检测函数

图像处理项目

项目简介

这个项目主要关注图像处理技术,包括但不限于边缘检测、图像二值化,分辨率,灰度量化在线处理等。项目采用Python语言和OpenCV库,为图像处理提供了高效和灵活的解决方案。

功能列表

图像二值化:使用全局阈值将图像转换为二值图像。

边缘检测:提供多种度量标准,包括L1、L2和基于连通性的方法。

代码分析

图像二值化 - binarize_image

这个函数负责将输入图像转换为灰度图像(如果还不是),然后使用阈值127进行二值化。

python 复制代码
def binarize_image(image):
    if len(image.shape) == 3:
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    threshold = 127
    _, binary_image = cv2.threshold(image, threshold, 255, cv2.THRESH_BINARY)
    return binary_image

4连通和8连通 - four_connected 和 eight_connected

这两个函数分别返回一个点的4连通和8连通邻居。

python 复制代码
def four_connected(x, y):
    return [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]

def eight_connected(x, y):
    return [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1),
            (x - 1, y - 1), (x + 1, y + 1), (x - 1, y + 1), (x + 1, y - 1)]

边缘检测 - detect_edges

这个函数实现了基于不同度量标准的边缘检测。

l1: 使用Canny边缘检测

l2: 使用Laplacian边缘检测

基于连通性的度量(4连通和8连通)

python 复制代码
def detect_edges(image, metric):
    binary_image = binarize_image(image)
    edges = np.zeros_like(binary_image, dtype=np.uint8)

    height, width = binary_image.shape

    inner_func = eight_connected if metric == '内部点8连通,轮廓点4连通' else four_connected
    edge_func = four_connected if metric == '内部点8连通,轮廓点4连通' else eight_connected

    for x in range(1, height - 1):
        for y in range(1, width - 1):
            pixel = binary_image[x, y]

            inner_neighbors = inner_func(x, y)
            is_inner = all(
                0 <= i < height and 0 <= j < width and binary_image[i, j] == pixel for i, j in inner_neighbors)

            if is_inner:
                continue

            edge_neighbors = edge_func(x, y)
            is_edge = any(0 <= i < height and 0 <= j < width and binary_image[i, j] != pixel for i, j in edge_neighbors)

            if is_edge:
                edges[x, y] = 255  # Set the edge pixel to white

    return edges

如何使用

Flask== 2.3.3

opencv-python== 4.6.0

numpy== 1.23.4

确保安装了Python和OpenCV。

导入项目代码。

使用detect_edges函数进行边缘检测。

联系方式

GitHub

相关推荐
fengfuyao9854 分钟前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
飞翔的佩奇2 小时前
【完整源码+数据集+部署教程】食品分类与实例分割系统源码和数据集:改进yolo11-AggregatedAttention
python·yolo·计算机视觉·数据集·yolo11·食品分类与实例分割
OperateCode3 小时前
AutoVideoMerge:让二刷更沉浸的自动化视频处理脚本工具
python·opencv·ffmpeg
七元权3 小时前
论文阅读-Gated CRF Loss for Weakly Supervised Semantic Image Segmentation
论文阅读·深度学习·计算机视觉·语义分割·弱监督
CoovallyAIHub4 小时前
方案 | 动车底部零部件检测实时流水线检测算法改进
深度学习·算法·计算机视觉
CoovallyAIHub4 小时前
方案 | 光伏清洁机器人系统详细技术实施方案
深度学习·算法·计算机视觉
lxmyzzs4 小时前
【图像算法 - 14】精准识别路面墙体裂缝:基于YOLO12与OpenCV的实例分割智能检测实战(附完整代码)
人工智能·opencv·算法·计算机视觉·裂缝检测·yolo12
jndingxin1 天前
OpenCV图像注册模块
人工智能·opencv·计算机视觉
R-G-B1 天前
【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数)
python·opencv·视频加载·摄像头调用·获取视频基本信息·获取视频帧率·获取视频帧数
荼蘼1 天前
OpenCv(三)——图像平滑处理
人工智能·opencv·计算机视觉