zoukankan      html  css  js  c++  java
  • 使用边缘检测,将图像旋转到水平位置

    https://www.cnblogs.com/luofeel/p/9150968.html  边缘检测,霍夫变换

    http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html   霍夫变换原理

    https://blog.csdn.net/wyx100/article/details/80541726  旋转图像

    https://www.cnblogs.com/silence-cho/p/11006958.html 图像增强

    霍夫变换

    Hough变换是经典的检测直线的算法。其最初用来检测图像中的直线,同时也可以将其扩展,以用来检测图像中简单的结构。

    OpenCV提供了两种用于直线检测的Hough变换形式。其中基本的版本是cv2.HoughLines。其输入一幅含有点集的二值图(由非0像素表示),其中一些点互相联系组成直线。通常这是通过如Canny算子获得的一幅边缘图像。cv2.HoughLines函数输出的是[float, float]形式的ndarray,其中每个值表示检测到的线(ρ , θ)中浮点点值的参数。下面的例子首先使用Canny算子获得图像边缘,然后使用Hough变换检测直线。其中HoughLines函数的参数3和4对应直线搜索的步长。在本例中,函数将通过步长为1的半径和步长为π/180的角来搜索所有可能的直线。最后一个参数是经过某一点曲线的数量的阈值,超过这个阈值,就表示这个交点所代表的参数对(rho, theta)在原图像中为一条直线。具体理论可参考这篇文章

    #coding=utf-8
    import cv2
    import numpy as np  
    
    img = cv2.imread("/home/sunny/workspace/images/road.jpg", 0)
    
    img = cv2.GaussianBlur(img,(3,3),0)
    edges = cv2.Canny(img, 50, 150, apertureSize = 3)
    lines = cv2.HoughLines(edges,1,np.pi/180,118) #这里对最后一个参数使用了经验型的值
    result = img.copy()
    for line in lines[0]:
        rho = line[0] #第一个元素是距离rho
        theta= line[1] #第二个元素是角度theta
        print rho
        print theta
        if  (theta < (np.pi/4. )) or (theta > (3.*np.pi/4.0)): #垂直直线
                    #该直线与第一行的交点
            pt1 = (int(rho/np.cos(theta)),0)
            #该直线与最后一行的焦点
            pt2 = (int((rho-result.shape[0]*np.sin(theta))/np.cos(theta)),result.shape[0])
            #绘制一条白线
            cv2.line( result, pt1, pt2, (255))
        else: #水平直线
            # 该直线与第一列的交点
            pt1 = (0,int(rho/np.sin(theta)))
            #该直线与最后一列的交点
            pt2 = (result.shape[1], int((rho-result.shape[1]*np.cos(theta))/np.sin(theta)))
            #绘制一条直线
            cv2.line(result, pt1, pt2, (255), 1)
    
    cv2.imshow('Canny', edges )
    cv2.imshow('Result', result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

      

  • 相关阅读:
    HDU.2087 剪花布条
    一个acm过来人的心得
    一个acm过来人的心得
    HDU.2190 悼念512汶川大地震遇难同胞——重建希望小学
    HDOJ.2501 Tiling_easy version
    HDOJ.2501 Tiling_easy version
    HDU
    poj3216 Prime Path(BFS)
    poj1426 Find The Multiple (DFS)
    Rikka with Nickname (简单题)
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/12031800.html
Copyright © 2011-2022 走看看