我试图用OpenCV库识别一个手写的数学运算符=
,然而,我遇到了这样一个问题:它只能识别一个笔划就能画出来的东西。你知道吗
import cv2
import numpy as np
from PIL import Image, ImageOps
img = cv2.imread("sum.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#Gaussian Blurring to reduce noise
blur = cv2.GaussianBlur(gray, (5,5), 0)
#Adaptive Thresholding to account for different light/shadows
threshed = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
morphed = cv2.morphologyEx(threshed, cv2.MORPH_OPEN, np.ones((3,3)))
conturs_lst = cv2.findContours(morphed, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2]
for cnt in conturs_lst:
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x,y), (x+w, y+h), (255, 0, 255), 1, cv2.LINE_AA)
相反,此代码会导致此行为,其中等号的两个部分在单独的框中限定。你知道吗
实际输出:
有人知道如何修改我的代码,使整个等号位于一个边界框下吗?你知道吗
您可以尝试以下方法:
变形后将得到以下结果:
检测轮廓你会得到这样的结果:
<强>注释:EM>代码为C++,可以只考虑如何实现它的步骤。
我希望它能帮助你!你知道吗
相关问题 更多 >
编程相关推荐