煤矸石空心砖

新闻分类

联系我们Contact

企业名称:桐城市南口新型建材有限公司

联系人:崔经理

电话:0556-6568069

手机:18156911555

邮箱:303927413@qq.com

地址:桐城市龙腾街道高桥村

网址:   www.nkxxjc.com 



您的当前位置: 首 页 > 矩形面积c++编程 > 求最小外接矩形的面积(C++实现)

求最小外接矩形的面积(C++实现)

发布日期:2023-01-30 00:15 作者: 点击:

目录求最小外接矩形的原理C++实现代码

求最小外接矩形的原理

最近在做课程设计的过程中遇到了一个问题,需要求出一幅图像中物体的矩形度,但是求解矩形度需要用到该物体的最小外接矩形的面积。所以我查了各种资料想要写一个求解物体最小外接矩形的代码。

首先我们来看一下求解的原理。一个物体的与x轴和y轴平行的外接矩形就是这个物体的简单外接矩形,显然,物体的简单外接矩形是比较容易计算面积的。那么我们只需要将物体旋转一定的角度,再求出旋转后的简单外接矩形,最后得到最小的简单外接矩形的面积就行了,而旋转的角度在正负90°之间,以1°为1个间隔。

因为我们只要求解面积而不需要将这个矩形画出来,所以可以采用C++中的set容器来实现,set容器具有自动排序的功能。

大致实现算法如下: 在这里插入图片描述

C++实现代码 // 求解最小外接矩形面积 long lengthAndWidth(LPSTR lpSrcStartBits, long lSrcWidth, long lSrcHeight, int label) { unsigned char* lpSrc; int* pixel = new int[2]; pixel[0] = pixel[1] = 0; long lLineBytes = WIDTHBYTES(lSrcWidth * 8); // 旋转角度(弧度) float fRotateAngle; // 旋转角度的正弦和余弦 float fSina, fCosa; int rotate = 0; long x0, y0; std::set setx,sety; long min = 10000000; long square = 0; for (rotate = -90;rotate square) { min = square; pixel[0] = *setx.rbegin() - *setx.begin() + 1; pixel[1] = *sety.rbegin() - *sety.begin() + 1; } setx.clear();sety.clear(); } return (pixel[0]*pixel[1]); }

当然这份代码只对8位图像有效,我们也可以参照算法把它改成适用于24位图像的代码。

参考文章: https://zhuanlan.zhihu.com/p/97855964.

本文网址:

关键词:矩形面积c++编程

相关新闻: