iT邦幫忙

0

根據白色像素值劃線

  • 分享至 

  • xImage

已對圖片進行前處理,使圖片只剩下 0 和 255 的值,

https://ithelp.ithome.com.tw/upload/images/20230218/20111873l3FYsVQcO8.png

想請問如何像圖中標示出紅線呢?

目前有過的想法是根據搜尋最左上、最左下、最右上、最右下第一個找到的白點進行劃線動作,
但是因為有其他 noise 的關係,所以無法達成,

請問有大神知道如何達成嗎?
謝謝幫忙

Aoi iT邦新手 5 級 ‧ 2023-03-07 13:46:07 檢舉
您可以使用霍夫直線變換(Hough Line Transform)來在圖像中檢測直線。

步驟如下:

1. 將圖像轉換為灰度圖像。
2. 對圖像進行二值化處理,將所有非零值設置為255,所有零值設置為0。
3. 應用霍夫直線變換來檢測直線。該變換將在霍夫空間中檢測圖像中的所有直線。
4. 從霍夫空間中選擇最長的幾條線段,這些線段應該是您要尋找的白色線。
5. 繪製這些線段到原始圖像中。
下面是使用Python OpenCV實現霍夫直線變換的示例代碼:python

import cv2
import numpy as np

# 读取图像
img = cv2.imread('image.png')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)[1]

# 检测直线
lines = cv2.HoughLinesP(thresh, rho=1, theta=np.pi/180, threshold=100, minLineLength=100, maxLineGap=10)

# 绘制直线
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

您可以根據需要調整參數,例如threshold, minLineLength, maxLineGap等,以獲得最佳效果。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答