当前位置: 首页 > 知识库问答 >
问题:

不支持的格式或格式组合),FindContentours

储臻
2023-03-14

我想用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()

我将图像正确地转换为灰度,并成功地在框架上画了一条线。问题是我得到了这个错误

错误:OpenCV(3.4.2)C:\build\3\u 4\u winpack-bindings-win32-vc14-static\OpenCV\modules\imgproc\src\contours。cpp:199:错误:(-210:不支持的格式或格式组合)[Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL仅在函数“cvStartFindContours_Impl”中支持CV_32SC1图像

当我在代码行中传递变量“frame”时,有人能帮我解决这个错误吗

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

共有2个答案

闻法
2023-03-14

cv2.find轮廓的留档

图像-源,一个8位单通道图像。非零像素被视为1。零像素保持为0,因此图像被视为二进制。您可以使用比较()、inRange()、阈值()、AdaptiveThreshold()、Canny()等来创建灰度或彩色二值图像。该函数在提取轮廓时修改图像。如果模式等于CV_RETR_CCOMP或CV_RETR_FLOODFILL,输入也可以是标签的32位整数图像(CV_32SC1)。

试试这条线来缩放像素

image = cv2.convertScaleAbs(image)
张财
2023-03-14

如果您查看OpenCV文档,就会看到函数cv2。findContour()需要单色图像。您通过仍在3个通道中的。您应该使用gray变量cv2.findContours(gray,…)

 类似资料:
  • Three.js有一系列导入外部文件的辅助函数,是在three.js之外的,使用前需要额外下载,在https://github.com/mrdoob/three.js/tree/master/examples/js/loaders可以找到。 *.obj是最常用的模型格式,导入*.obj文件需要OBJLoader.js;导入带*.mtl材质的*.obj文件需要MTLLoader.js以及OBJMTL

  • 音频导入格式 AAC AIFF M2A M4A MP2 MP3 视频导入格式 .264 3GP、3GPP AVC AVI F4V FLV MOV (QuickTime) MPE MPEG‑1 MPEG‑4 MPEG‑2(如果已安装解码器,例如使用 Adobe 视频套件) MTS MXF R3D TS VOB 视频导出格式 DPX MOV (QuickTime) MP4 图形文件格式 Photosh

  • 查找 Photoshop 中支持的文件格式列表。 音频导入格式 (*) 表示在 Photoshop CS6 中引入的支持格式。 AAC* AIFF* M2A* M4A* MP2* MP3* 视频导入格式 (*) 表示在 Photoshop CS6 中引入的支持格式。 .264* 3GP 3GPP* AVC* AVI(请参阅下面的注释) F4V* FLV* MOV (QuickTime) MPE*

  • 问题内容: 对于大数据项目,我计划使用spark,它具有一些不错的功能,例如用于重复工作负载的内存计算。它可以在本地文件或HDFS之上运行。 但是,在官方文档中,我找不到有关如何处理压缩文件的任何提示。实际上,处理.gz文件而不是解压缩文件可能非常有效。 有没有一种方法可以手动实现读取gzip文件,或者在读取.gz文件时已经自动完成解压缩? 问题答案: 从Spark Scala编程指南的“ Had

  • Impala中不支持蜂巢日期格式。 我在配置单元表中创建了分区日期列,但当我可以从impala中的hive_metadata访问相同的表时,它会显示

  • 问题内容: 我搜索了Google,发现了一些矛盾之处。xlwt是否支持xlsx文件(MS Office 2007)。我听说xlwt 0.7.4支持xlsx文件。有谁尝试过使用xlwt 0.7.4编写xlsx文件 这个问题的目的是,如果我需要安装,我没有安装库的权限,我需要提供更多详细信息。我需要用python编写xlsx文件,所以如果有人做过类似的事情将有助于提供更好的信息 我已经查看了这个Wik