Opencv实践项目之实时物体的测量——c++

本文通过C++实现使用OpenCV进行实时物体测量的项目,详细讲解了全局变量设置、主函数流程、参照物识别及目标识别的步骤,并展示了最终效果。
摘要由CSDN通过智能技术生成

在这里插入图片描述
全局变量

Mat matrix;
Point2f center;
Mat frame;
float scale = 0.25;
bool flag = false;

主函数

int main()
{
   
	frame = imread("celiang.jpg");
	resize(frame, frame, Size(0,0), scale, scale, INTER_LINEAR);
	imshow("original", frame);
	int thres[] = {
    50,255 };
	Mat out;
	Point2f a4;
	getcontours(frame, thres,out,a4);
	//A4纸的长度为210,宽度为297
	double a4_width = 210;
	double a4_height = 297;
	int scale = 3;
	Point2f mart;
	int th[] = {
    50,255 };
	getcontours_2(out, th,mart);

	if (flag)
	{
   
		int wid = round(mart.x / a4.x * a4_width);
		int hei = round(mart.y / a4.y * a4_height);
		string w = to_string(wid)+"cm";
		
		putText(out, w, Point(center.x, center.y - 50), FONT_HERSHEY_SCRIPT_COMPLEX, 1, Scalar(0, 0, 255), 1);
		string h = to_string(hei)+"cm";
		putText(out, h, Point(center.x - 70, center.y + hei ), FONT_HERSHEY_SCRIPT_COMPLEX, 1, Scalar(0, 0, 255), 1);
	}
	imshow("test", out);
	waitKey(0);
	return 0;
}

参照物识别

void getcontours(Mat img, const int arr[],Mat& out,Point2f& ob,int minarea=1000*scale)
{
   
	
	Mat imggray;
	cvtColor(img,imggray, COLOR_BGR2GRAY);
	Mat imggauss;
	GaussianBlur(imggray,imggauss,</
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值