用python写一个函数对图像二值化高斯滤波,腐蚀,单独把字符区域截取出来
时间: 2024-05-04 17:21:30 浏览: 82
以下是一个简单的示例代码,可以实现对图像的二值化、高斯滤波、腐蚀操作,并将字符区域截取出来。
```python
import cv2
def preprocess_image(image_path):
# 读取图像
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 二值化操作
_, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# 高斯滤波
blur = cv2.GaussianBlur(thresh, (3, 3), 0)
# 腐蚀操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
erosion = cv2.erode(blur, kernel, iterations=1)
# 查找轮廓
contours, hierarchy = cv2.findContours(erosion, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 将每个字符区域截取出来
char_list = []
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
char_img = img[y:y+h, x:x+w]
char_list.append(char_img)
return char_list
```
这段代码中,我们使用了OpenCV库来实现图像处理操作。首先,我们读取了输入的图像,并对其进行二值化操作,得到一个二值化的图像。然后,我们对二值化图像进行高斯滤波和腐蚀操作,以消除噪点和连接字符之间的空隙。接着,我们使用OpenCV的`findContours`函数查找图像中的轮廓,并将每个字符的区域截取出来,存储在一个列表中。最后,我们返回这个字符列表。
你可以将这个函数传入一个图像路径,它会返回一个字符列表,其中每个元素都是一个字符图像。你可以根据需求对这些字符图像进行进一步处理,例如使用OCR技术识别字符。
阅读全文