最低水平線算法代碼

最低水平線算法通常用於在圖像中尋找最低的可見地面或水平線。這種算法通常需要圖像處理和計算機視覺的知識。以下是一個簡單的Python代碼示例,使用OpenCV庫來實現最低水平線算法:

import cv2
import numpy as np

# 讀取圖像
img = cv2.imread('image.jpg')

# 將圖像轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 使用Canny邊緣檢測算法檢測圖像中的邊緣
edges = cv2.Canny(gray, 50, 150)

# 使用Hough變換檢測直線
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 遍歷所有檢測到的直線,找到最低的直線
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho/np.tan(theta)
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + a*1000)
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - a*1000)
    # 畫出直線的像素點
    cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
    # 根據直線與圖像的交點判斷是否為最低水平線
    if (y1 < img.shape[0] and y2 < img.shape[0]) and abs(y1 - y2) < img.shape[0] // 3:
        cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), -1)
        cv2.putText(img, "Lowest Line", (x1, y1-15), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
        break  # 當找到最低直線後退出循環

# 顯示結果圖像
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

這個代碼使用Canny邊緣檢測算法檢測圖像中的邊緣,然後使用Hough變換檢測直線。在檢測到直線後,它遍歷所有直線,找到最低的直線,並在圖像中畫出該直線。最後,它顯示結果圖像。請注意,這只是一個簡單的示例代碼,可能需要調整參數和算法以適應特定的圖像和任務。