车辆计数-OPENCV项目(C++)含原视频

本文介绍了一个使用C++和OpenCV进行车辆计数的项目。作者在复现Python版本的项目时遇到问题,发现在处理视频帧时,轮廓的维度和vector始终为0。经过排查,发现是因为只检查了第一帧。最终,作者解决了问题,代码能够运行,虽然效果有待提升。文章还提到原作者使用Python的array处理中心点,而C++中作者选择了vector,但由于基础不扎实,在索引操作上遇到困难,最后通过直接写入数据的方法解决问题。作者希望能与读者交流并改进代码。
摘要由CSDN通过智能技术生成

有个很著名的“车辆计数”项目,原版应该是慕课上的项目,然后B站有挪用的视频,CSDN上也有原版代码。但都是用python写的,我就准备用C++复现一下。毕竟学C++才一个月对我来说还是蛮有挑战性的。

其它都没啥问题,关键卡在了一步往vector里push_back点,但是我逐步运行编译发现这个vector一直是0维度的,我怀疑了各种问题,是不是子函数写错了返回不了数据,还是声明变量、调用变量的方式出现错误。

花了好久我才发现,轮廓的维度也是0啊,但轮廓那一块我不可能写错的,最后我意识到,那是因为这个循环只看到了第一帧,我要是跳到后面几帧才会发现轮廓和vector维度不在是0了。

以下是代码,亲测能跑,但效果嘛~
欢迎交流
另外原作者在找中心点这一部分是用array做的,而且python做起来简单太多了。C++我当然想着用vector去做,但奈何我基础不好,在vector类型数据的索引上又思考了好久想不出来,后面换了直接写进去的方式也算是成功了。

真心欢迎大神看到我的代码进行交流!

#include <opencv2/opencv.hpp>
#include<iostream>
#include<vector>

using namespace cv;
using namespace std;

int cx, cy;
int center(int x, int y, int w, int h);
int center(int x, int y, int w, int h) {
   
	int x1 = int(w / 2);
	int y1 = int(h / 2);
	cx = x + x1;
	cy = y + y1;
	return 0;
}

//检测线的高度和偏移
int line_high = 550;
int offset = 7;

int carno = 0;

Point cpoint;
int min_w = 90;
int min_h = 90;

Ptr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值