b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

word画图板今天来说一下怎么样将这个旋转的文本框矫正,大体(2)

电脑杂谈  发布时间:2018-02-15 00:24:05  来源:网络整理
vector< pair<int, int> > tooNearCandidates;  //移除那些角点互相离的太近的四边形?? ?? ?? //移除角点太接近的元素????
	for (int i = 0;i < detector.size();i++) //选择排序法 
	{
		for (int j = i + 1;j < detector.size();j++)
		{
			float distSquared = 0;
			for (int c = 0;c < 4;c++)
			{
				Point v = detector[i][c] - detector[j][c]; //四个顶点一一对应相减
				distSquared += v.dot(v); //向量点乘,求距离
			}
			distSquared /= 4;

			if (distSquared < 100) //
			{
				tooNearCandidates.push_back(pair<int, int>(i, j));
			}
		}
	}
	vector<bool> removalMask(detector.size(), false);
	for (int i = 0;i < tooNearCandidates.size();i++)
	{
		float p1 = perimeter(detector[tooNearCandidates[i].first]);
		float p2 = perimeter(detector[tooNearCandidates[i].second]);
		//谁周长小 移除谁
		int removalIndex;
		if (p1 > p2)
		{
			removalIndex = tooNearCandidates[i].second;
		}
		else 
		{
			removalIndex = tooNearCandidates[i].first;
		}
		removalMask[removalIndex] = true;
		//cout << removalIndex;
	}
	markDetector.clear();
	for (int i = 0;i < detector.size();i++)
	{
		if (!removalMask[i])
		{
			markDetector.push_back(detector[i]);
		}
	}
	cout << markDetector.size() << endl;
	vector<RotatedRect>rotateRects;
	for (int i = 0;i < markDetector.size();i++)
	{
		RotatedRect r = minAreaRect(Mat(markDetector[i]));
		Point2f ver[4];
		r.points(ver);
		for (int k = 0;k < 4;k++)
		{
			line(g_src, ver[k], ver[(k + 1) % 4], Scalar(0, 0, 255), 2, 8, 0);
			//cout << "第" << k + 1 << "个点坐标为" << vertices[i] << endl;
		}
		rotateRects.push_back(r);
	}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-78133-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 申立洋
      申立洋

      期待

    • 尹式
      尹式

      况且国内形式也需要一场外部战争来提高国民的凝聚力

    热点图片
    拼命载入中...