C++遇到的一个比较奇怪的问题

今天碰到一个比较奇怪的问题,就是先在for循环外面定义一个Mat,然后在里面反复用,将mat内容push_bach到一个vector当中,但是这样会造成vector当中的内容只有第一次的Mat内容,循环累加之后,却无法将新的Mat推进vector当中。后面我将Mat的定义放在了循环里面,啥时候用,立马在前面定义上,然后在push_back到vector当中,就正常。
不知道咋回事,难道这个mat里面的内容不会被冲掉吗?只有重新声明才会被更新?
以后实力强了再来看是咋回事吧。
这个改进后的代码

		vector<cv::Mat> rectQRCodeGray;
		for (int i = 0; i < AllQRCodeCircles.size(); i++)
		{
			int rectQR_x = AllQRCodeCircles[i].centre_x - CircleRadius;
			int rectQR_y = AllQRCodeCircles[i].centre_y - CircleRadius;
			int rectQR_height = CircleRadius * 2;
			int rectQR_width = CircleRadius * 2;
			if (rectQR_x < 0)rectQR_x = 0;
			if (rectQR_y < 0)rectQR_y = 0;
			if ((rectQR_x + rectQR_width) > imageQR.cols) rectQR_width = imageQR.cols - rectQR_x;
			if ((rectQR_y + rectQR_height) > imageQR.rows) rectQR_height = imageQR.rows - rectQR_y;
			Rect tem_rect(rectQR_x, rectQR_y, rectQR_width, rectQR_height);
			Mat rectQR, rectQRGray;
			rectQR = imageQR(tem_rect);
			cvtColor(rectQR, rectQRGray, COLOR_BGR2GRAY);
			// displayPicture("小", rectQRGray, 2500);
			rectQRCodeGray.push_back(rectQRGray);
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值