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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CV:cv2实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型

發(fā)布時間:2025/3/21 编程问答 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CV:cv2实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CV:cv2實現(xiàn)檢測幾何形狀并進行識別、輸出周長、面積、顏色、形狀類型

?

?

?

?

目錄

輸出結(jié)果

實現(xiàn)代碼


?

?

?

?

?

輸出結(jié)果


?

?

?

實現(xiàn)代碼

# -*- coding: utf-8 -*-#OpenCV實現(xiàn)檢測幾何形狀并進行識別、輸出周長、面積、顏色、形狀類型——Jason niu import cv2 as cv import numpy as npclass ShapeAnalysis: #定義形狀分析的類def __init__(self):self.shapes = {'triangle': 0, 'rectangle': 0, 'polygons': 0, 'circles': 0}def analysis(self, frame):h, w, ch = frame.shaperesult = np.zeros((h, w, ch), dtype=np.uint8)# 二值化圖像print("start to detect lines...\n")gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)cv.imshow("input image", frame)out_binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)for cnt in range(len(contours)):# 提取與繪制輪廓cv.drawContours(result, contours, cnt, (0, 255, 0), 2)# 輪廓逼近epsilon = 0.01 * cv.arcLength(contours[cnt], True)approx = cv.approxPolyDP(contours[cnt], epsilon, True)# 分析幾何形狀corners = len(approx)shape_type = ""if corners == 3:count = self.shapes['triangle']count = count+1self.shapes['triangle'] = countshape_type = "三角形"if corners == 4:count = self.shapes['rectangle']count = count + 1self.shapes['rectangle'] = countshape_type = "矩形"if corners >= 10:count = self.shapes['circles']count = count + 1self.shapes['circles'] = countshape_type = "圓形"if 4 < corners < 10:count = self.shapes['polygons']count = count + 1self.shapes['polygons'] = countshape_type = "多邊形"# 求解中心位置mm = cv.moments(contours[cnt])cx = int(mm['m10'] / mm['m00'])cy = int(mm['m01'] / mm['m00'])cv.circle(result, (cx, cy), 3, (0, 0, 255), -1)# 顏色分析和提取color = frame[cy][cx]color_str = "(" + str(color[0]) + ", " + str(color[1]) + ", " + str(color[2]) + ")"# 計算面積與周長p = cv.arcLength(contours[cnt], True)area = cv.contourArea(contours[cnt])print("周長: %.3f, 面積: %.3f 顏色: %s 形狀: %s "% (p, area, color_str, shape_type))cv.imshow("Analysis Result", self.draw_text_info(result))return self.shapes if __name__ == "__main__":src = cv.imread("F:/File_Python/Resources/004.png")ld = ShapeAnalysis()ld.analysis(src)cv.waitKey(0)cv.destroyAllWindows()

?

?

總結(jié)

以上是生活随笔為你收集整理的CV:cv2实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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