opencv python 图像旋转角度
我正在开发一个车牌检测的算法。 我已经完成了车牌的位置识别,现在出现了一个新问题。 我想要检测车牌图像的旋转角度,并在必要时进行旋转。 但是我该怎么检测这个角度呢? 我尝试使用了cv2.HoughLinesP这个函数,但结果如附图所示。 http://postimg.org/image/vis8errzn/
y = area.shape[0]
x = area.shape[1]
#############################################################################
#If necessary rotate image by angle detected with Hough transformation
gray = cv2.cvtColor(area,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 10
maxLineGap = 30
lines = cv2.HoughLinesP(edges,1,math.pi/180,100,minLineLength,maxLineGap)
if(lines != None):
for x1,y1,x2,y2 in lines[0]:
cv2.line(gray,(x1,y1),(x2,y2),(0,255,0),2)
a = ((y2-y1)*1.0)/((x2-x1)*1.0)
print 'a = ', a
print 'lines = ', lines
1 个回答
-1
我不太确定你说的“板”指的是什么,但我猜它可能是某种平面物体,上面有明显的特征。不管怎样,这里有一份来自OpenCv的很棒的教程,解释了我认为你想问的问题:
http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
这个过程的基本步骤是:
- 先准备好你想要分析的板的图片文件(按照你想要的方向)
- 在这两张图片中检测特征点
- 用描述符给这些特征点赋予“意义”
- 在两张图片之间匹配这些描述符
- 计算这两张图片之间的单应性(这样你就能得到你想要的旋转矩阵)
所有这些都可以通过opencv的标准库函数来完成。