opencv python 图像旋转角度

0 投票
1 回答
3297 浏览
提问于 2025-04-18 13:31

我正在开发一个车牌检测的算法。 我已经完成了车牌的位置识别,现在出现了一个新问题。 我想要检测车牌图像的旋转角度,并在必要时进行旋转。 但是我该怎么检测这个角度呢? 我尝试使用了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

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html

这个过程的基本步骤是:

  • 先准备好你想要分析的板的图片文件(按照你想要的方向)
  • 在这两张图片中检测特征点
  • 用描述符给这些特征点赋予“意义”
  • 在两张图片之间匹配这些描述符
  • 计算这两张图片之间的单应性(这样你就能得到你想要的旋转矩阵)

所有这些都可以通过opencv的标准库函数来完成。

撰写回答