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

歡迎訪問 生活随笔!

生活随笔

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

python

python计算不规则图形面积_python opencv中的不规则形状检测和测量

發布時間:2024/9/27 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python计算不规则图形面积_python opencv中的不规则形状检测和测量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正如我在評論中提到的那樣,對于這個問題,分水嶺似乎是一個很好的方法.但是當你回答時,定義標記的前景和背景是困難的部分!我的想法是使用形態梯度沿著冰晶獲得良好的邊緣并從那里開始工作;形態梯度似乎很有效.

import numpy as np

import cv2

img = cv2.imread('image.png')

blur = cv2.GaussianBlur(img, (7, 7), 2)

h, w = img.shape[:2]

# Morphological gradient

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7))

gradient = cv2.morphologyEx(blur, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('Morphological gradient', gradient)

cv2.waitKey()

從這里開始,我使用一些閾值來對梯度進行二值化.可能有一種更清潔的方法來做到這一點……但這比我嘗試過的其他一些想法更好.

# Binarize gradient

lowerb = np.array([0, 0, 0])

upperb = np.array([15, 15, 15])

binary = cv2.inRange(gradient, lowerb, upperb)

cv2.imshow('Binarized gradient', binary)

cv2.waitKey()

現在我們有幾個問題.它需要一些清理,因為它很亂,而且,圖像邊緣的冰晶出現了 – 但我們不知道那些晶體實際上在哪里結束所以我們應該忽略那些.為了從掩碼中刪除它們,我遍歷邊緣上的像素并使用floodFill()從二進制圖像中刪除它們.不要在行和列的順序上混淆; if語句指定圖像矩陣的行和列,而floodFill()的輸入需要點(即x,y形式,與row,col相反).

# Flood fill from the edges to remove edge crystals

for row in range(h):

if binary[row, 0] == 255:

cv2.floodFill(binary, None, (0, row), 0)

if binary[row, w-1] == 255:

cv2.floodFill(binary, None, (w-1, row), 0)

for col in range(w):

if binary[0, col] == 255:

cv2.floodFill(binary, None, (col, 0), 0)

if binary[h-1, col] == 255:

cv2.floodFill(binary, None, (col, h-1), 0)

cv2.imshow('Filled binary gradient', binary)

cv2.waitKey()

大!現在只是打開和關閉一些清理它…

# Cleaning up mask

foreground = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)

foreground = cv2.morphologyEx(foreground, cv2.MORPH_CLOSE, kernel)

cv2.imshow('Cleanup up crystal foreground mask', foreground)

cv2.waitKey()

所以這個圖像被標記為“前景”,因為它具有我們想要分割的對象的可靠前景.現在我們需要創建一個確定的對象背景.現在,我以天真的方式做到了這一點,這只是為了使你的前景成長,所以你的對象可能都是在那個前景中定義的.但是,您可以使用原始蒙版或甚至漸變以不同的方式來獲得更好的定義.盡管如此,這仍然可以,但不是很強大.

# Creating background and unknown mask for labeling

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (17, 17))

background = cv2.dilate(foreground, kernel, iterations=3)

unknown = cv2.subtract(background, foreground)

cv2.imshow('Background', background)

cv2.waitKey()

因此所有的黑色都是流域的“確定背景”.我還創建了未知矩陣,它是前景和背景之間的區域,這樣我們就可以預先標記傳遞到分水嶺的標記,“嘿,這些像素肯定在前景中,這些像素肯定是背景,我我不確定這些之間.“現在剩下要做的就是分水嶺!首先,使用連接的組件標記前景圖像,識別未知和背景部分,并將它們傳遞到:

# Watershed

markers = cv2.connectedComponents(foreground)[1]

markers += 1 # Add one to all labels so that background is 1, not 0

markers[unknown==255] = 0 # mark the region of unknown with zero

markers = cv2.watershed(img, markers)

你會注意到我在img上運行了分水嶺().您可以嘗試在圖像的模糊版本上運行它(可能是中間模糊 – 我嘗試了這個并且為晶體獲得了更平滑的邊界)或其他預處理版本的圖像,這些版本定義了更好的邊界或某些東西.

將標記可視化需要一些工作,因為它們在uint8圖像中都是小數字.所以我做的是在0到179中為它們分配一些色調并在HSV圖像中設置,然后轉換為BGR以顯示標記:

# Assign the markers a hue between 0 and 179

hue_markers = np.uint8(179*np.float32(markers)/np.max(markers))

blank_channel = 255*np.ones((h, w), dtype=np.uint8)

marker_img = cv2.merge([hue_markers, blank_channel, blank_channel])

marker_img = cv2.cvtColor(marker_img, cv2.COLOR_HSV2BGR)

cv2.imshow('Colored markers', marker_img)

cv2.waitKey()

最后,將標記覆蓋到原始圖像上以檢查它們的外觀.

# Label the original image with the watershed markers

labeled_img = img.copy()

labeled_img[markers>1] = marker_img[markers>1] # 1 is background color

labeled_img = cv2.addWeighted(img, 0.5, labeled_img, 0.5, 0)

cv2.imshow('watershed_result.png', labeled_img)

cv2.waitKey()

嗯,那就是整個管道.您應該能夠連續復制/粘貼每個部分,并且您應該能夠獲得相同的結果.該管道中最薄弱的部分是對梯度進行二值化并定義流域的確定背景.距離變換可能有助于以某種方式對梯度進行二值化,但我還沒有到達那里.無論哪種方式……這是一個很酷的問題,我很想看到你對這個管道所做的任何改變,或者它對其他冰晶圖像的影響.

總結

以上是生活随笔為你收集整理的python计算不规则图形面积_python opencv中的不规则形状检测和测量的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 韩国伦理在线看 | 精品视频一二 | 污版视频在线观看 | 大胸喷奶水www视频妖精网站 | 欧美亚洲国产一区二区三区 | 波多野结衣一区二区三区高清 | 久操欧美 | 成人精品一区二区三区在线 | 2021毛片| 日韩精品视频网站 | 影音先锋丝袜美腿 | 欧美日韩成人在线观看 | 米奇7777狠狠狠狠视频 | 成人音影 | 日本三级中文 | 天天摸天天操天天射 | 免费在线播放毛片 | 亚洲精品乱码久久久久久9色 | 九九精品免费视频 | 国产成人高清视频 | 中文字幕在线观看 | www.污视频 | 人妻一区二区在线 | 看黄色a级片 | 成人h动漫精品一区二区 | 久久精品成人一区二区三区蜜臀 | 1000部多毛熟女毛茸茸 | 69影院在线观看 | 粉嫩av一区二区 | 国产一二三在线 | 欧美日韩在线视频一区二区三区 | 国产精品100 | 日本视频在线免费观看 | 午夜一区二区三区免费观看 | 亚洲片国产一区一级在线观看 | 国产一区二区三区四区hd | fc2ppv在线播放 | 中文字幕在线永久 | 日韩精品免费一区 | 国产超碰av | 欧美大片视频在线观看 | 国产一区二区精品丝袜 | 四虎精品永久在线 | 国产黄色片视频 | 51精产品一区一区三区 | 麻豆人妻少妇精品无码专区 | 1000部拍拍拍18勿入免费视频 | 污污网站在线观看视频 | 久久五月婷 | 少妇高潮灌满白浆毛片免费看 | 欧美一级性生活视频 | 亚洲综合免费 | 啪啪导航 | 影音先锋久久久久av综合网成人 | 高潮无码精品色欲av午夜福利 | 打屁股无遮挡网站 | 免费高清视频一区二区三区 | 少妇人妻邻居 | 蜜臀网在线| 4虎最新网址 | 天堂av官网 | 免费av看片| 久久爱伊人 | 天天干天天操天天 | 999久久久久久久久6666 | 女的高潮流时喷水图片大全 | 成年人小视频 | 午夜在线一区二区 | 在线观看麻豆视频 | 一区二区三区视频在线观看免费 | 欧美另类人妖 | 青娱乐最新官网 | 97理伦| 日本精品视频一区二区三区 | av午夜激情 | 黄色自拍网站 | 一二三四视频社区在线 | 97精品久久人人爽人人爽 | 欧美精品www| 亚洲成人一区二区在线观看 | 免费av中文字幕 | 日韩女优在线 | 国产又黄又粗又长 | 中文字幕人妻一区二区 | 亚洲一区av在线 | 欧美激情亚洲色图 | 亚洲国产免费 | 驯服少爷漫画免费观看下拉式漫画 | 日本免费电影一区二区三区 | 久久精品人人爽 | 色婷婷免费视频 | 91国在线 | 337p粉嫩大胆色噜噜噜 | 壮汉被书生c到合不拢腿 | 亚洲一区二区在线免费观看 | 青青草视频播放器 | 黄瓜视频在线播放 | 百合sm惩罚室羞辱调教 | 麻豆传媒在线视频 |