我创建了简单的神经网络,可以识别单独的数字和字符。我希望神经网络识别汽车上的车牌。为了做到这一点,我必须在图像上分隔符号。例如,我必须在图像上找到符号并将每个符号保存到文件(png或jpg):
来源图片:
成立的符号:
文件中的分隔符号:
如何使用python找到符号并将绿色矩形保存到简单的png
(或jpg
)文件?
答案 0 :(得分:1)
如果您希望使用OpenCV执行此操作,可以查看此解决方案:
您可以通过查找特定区域上方的轮廓来执行符号检测。它们相应的边界框可以绘制在相同形状的空白图像上。
import cv2
img = cv2.imread(r'C:\Users\Desktop\pic.png')
cv2.imshow('Image', img)
#--- create a blank image of the same size for storing the green rectangles (boundaries) ---
black = np.zeros_like(img)
#--- convert your image to grayscale and apply a threshold ---
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret2, th2 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
#--- perform morphological operation to ensure smaller portions are part of a single character ---
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
threshed = cv2.morphologyEx(th2, cv2.MORPH_CLOSE, kernel)
#--- find contours ---
imgContours, Contours, Hierarchy = cv2.findContours(threshed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in Contours:
#--- select contours above a certain area ---
if cv2.contourArea(contour) > 200:
#--- store the coordinates of the bounding boxes ---
[X, Y, W, H] = cv2.boundingRect(contour)
#--- draw those bounding boxes in the actual image as well as the plain blank image ---
cv2.rectangle(img2, (X, Y), (X + W, Y + H), (0,0,255), 2)
cv2.rectangle(black, (X, Y), (X + W, Y + H), (0,255,0), 2)
cv2.imshow('contour', img2)
cv2.imshow('black', black)
结果如下: