[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] 对应加粗边缘蒙版并不是原来字体边缘的颜色,而是包含原来字体边缘外的白色,所以并不起作用。将膨胀后的边缘以原来的边缘颜色应用回原图像上,需要怎么修改? |