帮我用c++和mfc写计算中心y坐标的函数gethearty(lSrcWidth, lSrcHeight, my_area),my_area为最大的轮廓区域面积
时间: 2024-02-23 11:00:58 浏览: 63
好的,以下是计算中心y坐标的函数:
```c++
int gethearty(int lSrcWidth, int lSrcHeight, int my_area)
{
// 计算轮廓区域的宽度和高度
int my_width = static_cast<int>(sqrt(my_area) * 2);
int my_height = static_cast<int>(sqrt(my_area) / 2);
// 计算轮廓区域的左上角和右下角坐标
int x1 = (lSrcWidth - my_width) / 2;
int y1 = (lSrcHeight - my_height) / 2;
int x2 = x1 + my_width;
int y2 = y1 + my_height;
// 计算轮廓区域的中心y坐标
int center_y = (y1 + y2) / 2;
return center_y;
}
```
该函数和之前的函数实现类似,主要是计算最大轮廓区域的宽度和高度,以及该区域在图像中的位置,最后计算出中心y坐标并返回。
同样地,您可以将该函数集成到 MFC 应用程序中,例如在类的成员函数中调用该函数,如下所示:
```c++
void CMyAppDlg::OnButton1Clicked()
{
// 获取图像宽度和高度
int lSrcWidth = m_Image.GetWidth();
int lSrcHeight = m_Image.GetHeight();
// 获取最大轮廓区域面积
int my_area = GetMaxContourArea();
// 计算中心y坐标
int center_y = gethearty(lSrcWidth, lSrcHeight, my_area);
// 显示结果
CString str;
str.Format(_T("中心y坐标:%d"), center_y);
m_Result.SetWindowText(str);
}
```
这个示例代码假设您的对话框中有一个按钮(Button1)和两个控件(Image 和 Result),当用户单击按钮时,它会获取图像宽度和高度以及最大轮廓区域面积,然后调用 gethearty 函数计算中心y坐标,并将结果显示在 Result 控件中。
阅读全文