gpt4 book ai didi

python - 不支持的格式或格式组合),FindContours

转载 作者:太空宇宙 更新时间:2023-11-03 23:09:44 25 4
gpt4 key购买 nike

我想使用 haar cascade 来计算汽车数量。

#import libraries of python opencv
import numpy as np
import cv2
import gc
import uuid
import datetime
import time
import csv

cap = cv2.VideoCapture('v3.mp4')

car_cascade = cv2.CascadeClassifier('cars.xml')
W = cap.get(3)
H = cap.get(4)
areaTH = 700

H1 = (H/2)+10
W1 = W/2
mx = 0
my = 30

while (cap.isOpened()):
#capture frame by frame
ret, frame = cap.read()

#convert video into gray scale of each frames

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

#detect cars in the video
cars = car_cascade.detectMultiScale(gray, 1.1, 3)


#to draw arectangle in each cars
for (x,y,w,h) in cars:
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)

#display the resulting frame
cv2.imshow('video', frame)
#press Q on keyboard to exit
if cv2.waitKey(25) & 0xFF == ord('q'):
break

Line1 = np.array([[20,H1],[310,H1]], np.int32).reshape((-1,1,2))
frame = cv2.polylines(frame,[Line1],False,(0,0,255),thickness=5)
fram, contours0, hierarchy =
cv2.findContours(frame,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
for cnt in contours0:
# cv2.drawContours(frame, cnt, -1, (0,255,0), 2, 8)
area = cv2.contourArea(cnt)
#print ('Area : '+str(area))

if area > areaTH:
#################
# TRACKING #
#################
M = cv2.moments(cnt)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
x,y,w,h = cv2.boundingRect(cnt)
cv2.circle(frame,(cx,cy), 3, (255,0,0), -1)
img = cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
#print ('H1 : '+str(H1))
print('cy : '+str(cy))

if (cy >= 147) and (cy<= 155):
Vehicles = Vehicles + 1
Line1 = np.array([[200,H1],[880,H1]],
np.int32).reshape((-1,1,2))
frame = cv2.polylines(frame,[Line1],False,(255,0,0),thickness=5)


cv2.imshow('Frame',frame)

#Abort and exit with 'Q' or ESC
k = cv2.waitKey(30) & 0xff
if k == 27:
break

cap.release() #release video file
cv2.destroyAllWindows()

我将图像正确转换为灰度并在框架上成功绘制了一条线问题是我收到此错误

error: OpenCV(3.4.2) C:\build\3_4_winpack-bindings-win32-vc14-static\opencv\modules\imgproc\src\contours.cpp:199: error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function 'cvStartFindContours_Impl'

当我在此代码行中传递变量“框架”时,有人可以帮我解决这个错误吗?

fram, contours0, hierarchy = 
cv2.findContours(frame,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)

最佳答案

如果您查看 OpenCV 文档,您会发现函数 cv2.findContour() 需要单色图像。您传递仍在 3 个 channel 中的 frame。您应该改用 gray 变量 (cv2.findContours(gray,...)

关于python - 不支持的格式或格式组合),FindContours,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52450602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com