目錄
一、圖像輪廓定義
二、繪制輪廓
三、計算輪廓面積與周長
一、圖像輪廓定義
圖像輪廓是具有相同顏色或灰度的連續(xù)帶你的曲線.輪廓在形狀分析和物體的檢測和識別中很有用
輪廓的作用:
- 用于圖形分析
- 物體的識別與檢測
注意點:
- 為了檢測的準(zhǔn)確性,需要先對圖像進(jìn)行二值化或Canny操作
- 畫輪廓是會修改輸入的圖像,如果之后想繼續(xù)使用原始圖像,應(yīng)該將原始圖像儲存到其他變量中。
案例代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-582374.html
import cv2
import numpy as np
# 該圖像顯示效果是黑白的,但是實際上確實三個通道的彩色圖像
img = cv2.imread('6.jpg')
# 變成單通道的黑白圖片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 二值化,注意有兩個返回值,閾值和結(jié)果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
# 輪廓查找,新版本返回兩個結(jié)果,輪廓和層級,老版本返回三個 參數(shù),圖像,輪廓和層級
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# 打印輪廓
print(contours)
# 釋放資源
cv2.waitKey(0)
cv2.destroyAllWindows()
二、繪制輪廓
參照函數(shù):
?代碼案例如下:
import cv2
import numpy as np
# 該圖像顯示效果是黑白的,但是實際上確實三個通道的彩色圖像
img = cv2.imread('6.jpg')
# 變成單通道的黑白圖片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 二值化,注意有兩個返回值,閾值和結(jié)果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
# 輪廓查找,新版本返回兩個結(jié)果,輪廓和層級,老版本返回三個 參數(shù),圖像,輪廓和層級
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# 打印輪廓
# print(contours)
# 繪制輪廓會直接修改原圖
# 如果想保持原圖不變,建議copy一份
img_copy = img.copy()
cv2.drawContours(img_copy,contours,-1,(0,0,255),2)
# 釋放資源
cv2.waitKey(0)
cv2.destroyAllWindows()
三、計算輪廓面積與周長
輪廓面積是指每個輪廓中所有的像素點圍成區(qū)域的面積,單位為像素文章來源:http://www.zghlxwxcb.cn/news/detail-582374.html
案例代碼如下:
import cv2
import numpy as np
# 該圖像顯示效果是黑白的,但是實際上確實三個通道的彩色圖像
img = cv2.imread('6.jpg')
# 變成單通道的黑白圖片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 二值化,注意有兩個返回值,閾值和結(jié)果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
# 輪廓查找,新版本返回兩個結(jié)果,輪廓和層級,老版本返回三個 參數(shù),圖像,輪廓和層級
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# 繪制輪廓會直接修改原圖
# 如果想保持原圖不變,建議copy一份
img_copy = img.copy()
cv2.drawContours(img_copy,contours,1,(0,0,255),2)
# 計算輪廓面積
area = cv2.contourArea(contours[1])
# 計算輪廓周長
perimeter = cv2.arcLength(contours[1],closed=True)
# 釋放資源
cv2.waitKey(0)
cv2.destroyAllWindows()
到了這里,關(guān)于OpenCv之圖像輪廓的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!