日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python+Opencv图像处理--基于OTSU+凸包检测的粘连大米分割

發布時間:2024/1/18 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+Opencv图像处理--基于OTSU+凸包检测的粘连大米分割 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
    • 1.分割流程圖
    • 2.圖像預處理
      • 2.1 改進二值化算法
      • 2.2 形態學運算
    • 3.提取輪廓
    • 4.凸包檢測
    • 5.標記大米


前言

轉載請注明本文出處。

最近一段時間一直在看粘連分割,網上也有很多demo,找了一個大米的圖像做測試。以下是本篇文章正文內容,下面案例可供參考。

1.分割流程圖

分割總流程圖如下圖所示:

2.圖像預處理

圖像預處理包括圖像二值化+形態學運算。

2.1 改進二值化算法

此處二值化思想參考本博客上一篇文章《OTSU改進算法-python》,
輸入原圖:
輸入圖像水印已經去除,方便大家測試。

二值化對比:

1.直接采用二值化算法進行二值化,

_, mask = cv.threshold(image_gray, 115, 255, cv.THRESH_BINARY)

直接采用二值化效果圖:

2.采用adaptive_otsu思想進行二值化,效果如下圖所示:

可以看出二值化效果有了非常大的提升,為后續分割處理打下了基礎。

2.2 形態學運算

此處采用3x3的核對圖像開運算

kernel = np.ones((3, 3), np.uint8) image_bin = cv.morphologyEx(mask, cv.MORPH_OPEN, kernel)

3.提取輪廓

根據以上二值化的圖像提取輪廓,如下圖所示。

_, contours, hierarchy = cv.findContours(image_bin, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

根據以上輪廓,看出有多個大米粘連的情況,下面采用凸包檢測。

4.凸包檢測

凸包檢測為了找到圖中粘連的大米,從圖中可以看出共有三處大米粘連,下圖黃色框部分:

求取凸包數量:

for i in range(len(contours)):cnt = contours[i]hull = cv.convexHull(cnt, returnPoints=False)

此處給定閾值T1(閾值根據自己實際情況設定),判斷凸包數量是否進入下一步,檢測缺陷點。

if len(hull) > T1:defects = cv.convexityDefects(cnt, hull)

如果defects數量>1符合條件將缺陷點連線,如下圖所示:

cv.line(mask, defects_point[0], defects_point[1],0)


5.標記大米

消除粘連后畫出所有輪廓外接矩,及中心點,最終結果如下圖所示:

cv.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0)) # 繪制外接矩 cv.circle(image, (cx, cy), 1, (0, 0, 255), -1) # 用圓點繪制目標重心

總結

以上是生活随笔為你收集整理的Python+Opencv图像处理--基于OTSU+凸包检测的粘连大米分割的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。