吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9|回复: 0
收起左侧

[求助] Python 使用opencv加粗图像中的线条边缘后,如何应用回原来的图像

[复制链接]
kenews 发表于 2024-11-28 18:46
[Python] 纯文本查看 复制代码
import cv2
import numpy as np
import argparse

# 创建命令行参数解析器
parser = argparse.ArgumentParser(description='处理图像并提取轮廓的颜色')
parser.add_argument('input_image', type=str, help='输入图像文件名')
args = parser.parse_args()

# 读取彩色图像
image = cv2.imread(args.input_image)

# 检查图像是否成功读取
if image is None:
    print(f"错误: 无法读取图像 '{args.input_image}'")
    exit(1)

# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用Canny边缘检测提取轮廓
edges = cv2.Canny(gray_image, 100, 200)

# 定义结构元素
kernel = np.ones((2, 2), np.uint8)

# 膨胀操作
dilated_edges = cv2.dilate(edges, kernel, iterations=1)

# 对膨胀后的边缘进行平滑处理
smoothed_edges = cv2.GaussianBlur(dilated_edges, (1, 1), 0)

# 创建结果图像,直接使用轮廓区域的颜色
result = image.copy()
result[smoothed_edges > 0] = image[smoothed_edges > 0]

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Edges', edges)
cv2.imshow('Dilated Edges', dilated_edges)
cv2.imshow('Smoothed Edges', smoothed_edges)
cv2.imshow('Result', result)

# 等待按键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()


这是通过AI生成的代码,生成代码的需求是加粗光栅图像中的文字边缘。上面代码中result[smoothed_edges > 0] = image[smoothed_edges > 0]是有问题的,image[smoothed_edges > 0] 对应加粗边缘蒙版并不是原来字体边缘的颜色,而是包含原来字体边缘外的白色,所以并不起作用。将膨胀后的边缘以原来的边缘颜色应用回原图像上,需要怎么修改?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 18:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表