簡體   English   中英

如何使用 OpenCV-Python 順利檢測焊接接頭?

[英]How can I smoothly detect the welding joint using OpenCV-Python?

我已嘗試使用此問題最后一部分中附加的代碼來檢測焊接接頭(焊道)。 我的目標是在關節上繪制輪廓,如第三張圖片所示,但我的結果很差,並且看起來與預期結果不相似。 這是我所做的總結,但代碼很清楚: 1. 讀取圖像.jpg格式 2. 圖像模糊 3. 閾值 4. 形態學操作 5. 創建蒙版 6. 尋找輪廓

但結果並不樂觀,我怎么能從這里脫身

img_new = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
blur_image = cv2.bilateralFilter(img_new,5,21,21)
thresh = cv2.adaptiveThreshold(blur_image,255,
                               cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                               cv2.THRESH_BINARY_INV,15,3)
kernel = np.ones((5,5),dtype='uint8')
thresh_dilated = cv2.dilate(thresh, kernel, iterations = 1)
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh_dilated, connectivity=4)
sizes = stats[1:,-1]
min_size = 5000
num_labels = num_labels -1
img2 = np.zeros((labels.shape))
for i in range(0,num_labels):
    if sizes[i]>=min_size:
        img2[labels==i+1]=255
closing = cv2.morphologyEx(img2,cv2.MORPH_CLOSE,kernel)
opening = cv2.morphologyEx(closing,cv2.MORPH_OPEN,kernel)
result = opening.copy()
new_result = result.astype(dtype=np.uint8)

black = np.full((new_result.shape[0],new_result.shape[1],3),(0,0,0),np.uint8)
black1 = cv2.ellipse(black,(700,750),(300,140),0,0,360,(255,255,255),-1)
grayscale = cv2.cvtColor(black1,cv2.COLOR_BGR2GRAY)
ret,b_mask = cv2.threshold(grayscale,127,255,0)
img_result = cv2.bitwise_and(new_result,b_mask)

contours, hierarchy = cv2.findContours(img_result, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)
cv2.imshow('result',img)
cv2.waitKey(0)```

閱讀任何論文

如果這適用於流水線上許多焊接接頭的自動加工? 這是否必須適用於許多其他類似的圖像? 在這種情況下,為單張圖片微調算法是沒有意義的。

如果是,那么您需要使用更多圖像來創建算法,也許使用不同的燈光設置,也許是在焊接后立即使用紅外攝像機拍攝的圖像以獲得“熱”面罩。 或者分別使用左右視線的光線將兩個圖像組合為一個標記。

另一件非常有用的事情是從零件中獲取“之前”圖像。 沒有焊接接頭。 在這種情況下,它可能會變得容易。 您只需創建圖像之間的差異,進行一些過濾以去除焊珠和微紅色層。

編輯1:

我忘了提到的另一件事是請分別查看 RGB 層。 這是您應該盡早嘗試的事情。 通常有一些有用的東西可以看到,例如,在您的情況下,藍色層可能很有趣。 請將圖層添加到您的問題中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM