我有视频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
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*/
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。