【发布时间】:2019-06-13 05:41:06
【问题描述】:
我有一个输入图像:
我正在对图像进行标准化,然后使用 OTSU 对其进行二值化。
import cv2
import numpy as np
import sys
import os
import time
import imutils
import numpy as np
from matplotlib import pyplot as plt
import re
import math
orgImg = cv2.imread(sys.argv[1])
orgHeight,orgWidth,_ = orgImg.shape
image = imutils.resize(orgImg,height=350)
rheight, rwidth,_= image.shape
kernel = np.ones((7,7), np.uint16)
# image = cv2.erode(image, kernel, iterations=1)
image11 = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Copy image to new variable
g = image11.copy()
cv2.normalize(g, g, 70, 255, cv2.NORM_MINMAX)
ret,black_mask = cv2.threshold(g,110,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("image",black_mask)
cv2.imwrite(sys.argv[1]+"thresh.jpg",black_mask)
cv2.waitKey(0)
输出图像为:
在输出中有许多锯齿状边缘。如何去除这些边缘并获得完美的“Ca”?
输出应该是这样的:
P.S.请注意,输出图像不一定是二进制
【问题讨论】:
-
能否请您发布所有代码?我不知道
g来自哪里,也不知道你在标准化之前对图像做了什么(如果你甚至在做任何事情) -
“完美”是什么意思?您只想删除字母周围的框架吗?或者您是否也想平滑字母本身的边缘?这听起来像是 OCR 的一项任务:检测字母,用文本覆盖替换它们。
标签: python python-3.x opencv computer-vision