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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opencv轮廓周长原理_OpenCV3 - 轮廓特征

發(fā)布時(shí)間:2024/4/13 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv轮廓周长原理_OpenCV3 - 轮廓特征 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

矩(Moments)

圖像矩可以幫助你計(jì)算一些特征, 例如對(duì)象的質(zhì)心, 對(duì)象的面積等等. 具體可參考Image Moments

函數(shù)**cv.moments()**?返回一個(gè)所有矩值的字典

import numpy as np

import cv2 as cv

img = cv.imread('star.jpg',0)

ret,thresh = cv.threshold(img,127,255,0)

im2,contours,hierarchy = cv.findContours(thresh, 1, 2)

cnt = contours[0]

M = cv.moments(cnt)

print( M )

通過這些矩值, 你可以計(jì)算出有用的數(shù)據(jù), 例如面積, 質(zhì)心等等. 質(zhì)心可以通過關(guān)系(Cx=M10/M00?and?Cy=M01/M00)來獲得. ?通過如下計(jì)算獲得

cx = int(M['m10']/M['m00'])

cy = int(M['m01']/M['m00'])

輪廓面積

輪廓面積可以通過函數(shù)**cv.contourArea()**獲得, 或者通過M['m00']

area = cv.contourArea(cnt)

輪廓周長

輪廓周長可以使用**cv.arcLength()**?獲得. 第二個(gè)參數(shù)指定圖形是否閉環(huán)(如果是則為True), 否則只是一條曲線.

perimeter = cv.arcLength(cnt,True)

輪廓逼近

它逼近一個(gè)輪廓形狀到另一個(gè)頂點(diǎn)數(shù)目較少的形狀, 這取決于我們指定的精度. 它是Douglas-Peucker algorithm算法的一種實(shí)現(xiàn).

第一個(gè)參數(shù)是輪廓

第二個(gè)參數(shù)稱為ε, 它是從輪廓到近似輪廓的最大距離.?這是一個(gè)準(zhǔn)確的參數(shù)。為了得到正確的輸出, 需要明智地選擇ε。

epsilon = 0.1*cv.arcLength(cnt,True)

approx = cv.approxPolyDP(cnt,epsilon,True)

如下的第二張圖是ε設(shè)定為10%的結(jié)果, 第三張圖是ε設(shè)定為1%的結(jié)果.

邊框

直邊界矩形

x,y,w,h = cv.boundingRect(cnt)

cv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

旋轉(zhuǎn)矩形

rect = cv.minAreaRect(cnt)

box = cv.boxPoints(rect)

box = np.int0(box)

cv.drawContours(img,[box],0,(0,0,255),2)

綠框是直邊界矩形, 紅框是旋轉(zhuǎn)矩形

參考文件

總結(jié)

以上是生活随笔為你收集整理的opencv轮廓周长原理_OpenCV3 - 轮廓特征的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。