开发者社区> 问答> 正文

如何计算轮廓权值?

我有视频https://filebin.net/kwo2b8cwjvw8pmy6/0.mp4?t=w921v1be 代码如下:

import cv2 as cv
import numpy as np

def edge_auto(v):
    sigma = 0.33
    _l = int(0.67 * v)
    _m = int(1.33 * v)
    return _l, _m

cap = cv.VideoCapture("C:/Users/a9212/Desktop/test/videos/0.mp4")
video_length = int(cap.get(cv.CAP_PROP_FRAME_COUNT))
print(video_length)
for frame in range(1000,video_length,50):
    if frame >= video_length:
        exit()
    cap.set(cv.CAP_PROP_POS_FRAMES, frame)
    ret, frame = cap.read()
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    v = np.median(gray)
    lower, upper = edge_auto(int(v))
    canny = cv.Canny(gray, lower, upper)
    contours, hierarchy = cv.findContours(canny, cv.RETR_CCOMP, cv.CHAIN_APPROX_TC89_L1)
    for cnt in contours:
            rect = cv.minAreaRect(cnt)
            box = cv.boxPoints(rect)
            box = np.int0(box)                
            con = cv.drawContours(frame, [box], -1, (0, 255, 0), 3)
            scale_percent = 70 # percent of original size
            width = int(frame.shape[1] * scale_percent / 100)
            height = int(frame.shape[0] * scale_percent / 100)
            dim = (width, height)
            resized = cv.resize(con, dim, interpolation = cv.INTER_AREA)
            cv.imshow('resized', resized)
    k = cv.waitKey(5) & 0xFF
    if k == 27:
        break
cap.release()
cv.destroyAllWindows()

我想计算轮廓线(rect),这是出现最多的帧。 如。

print(rect)
150

150 -表示轮廓出现在所有帧上的次数。 opencv有这样的功能吗?可能是rect。cv_weight或类似的东西。 问题来源StackOverflow 地址:/questions/59467205/how-to-calculate-contour-weight

展开
收起
kun坤 2019-12-25 09:31:28 416 0
1 条回答
写回答
取消 提交回答
  • p{color:red;} /*权值为1*/p span{color:green;} /*权值为1+1=2*/
    
    .warning{color:white;} /*权值为10*/p span.warning{color:purple;} /*权值为1+1+10=12*/
    
    #footer .note p{color:yellow;} /*权值为100+10+1=111*/
    
    2019-12-25 14:02:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载