细化迭代6:实现报表

一:测试用例

(1) 统计每月销售总金额 (数字或图形报表)

 通过按照如下格式输入月份后点确定,可查看不同时间区间的销售额的折线图

151336_InHe_2332245.png

(2) 按“产品类别”统计“起止时间”内销售金额,有小计和总计(数字报表)。

 按照如下格式输入时间区间选择产品类型点击确定后可看到该产品类型下不同产品的销售情况(柱形图表示),图标右上方为该产品类型在此区间内的销售总额,鼠标光标指到柱形图上时显示当前品种在时间区间内的销售总额。

 

151455_mBsc_2332245.png

二:测试分析

             本次迭代主要完成报表的相关统计功能,在基本完成数据统计的前提条件下,本组选择以“折线图或柱状图”这种直观的视图方式来展现报表的统计结果,使得操作方便,便于阅读,利于分析,有效的提高了工作效率。

 

转载于:https://my.oschina.net/u/2332245/blog/473546

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Rosenfeld细化算法的C++代码实现: ``` #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; // 二值化图像 Mat BinaryImage(Mat srcImage) { Mat dstImage; cvtColor(srcImage, dstImage, COLOR_BGR2GRAY); threshold(dstImage, dstImage, 0, 255, THRESH_BINARY | THRESH_OTSU); return dstImage; } // 判断像素是否在边界内 bool IsInnerBoundary(const Mat& img, int row, int col) { int count = 0; if (img.at<uchar>(row, col) == 0) { count += (img.at<uchar>(row - 1, col - 1) == 255 ? 1 : 0); count += (img.at<uchar>(row - 1, col) == 255 ? 1 : 0); count += (img.at<uchar>(row - 1, col + 1) == 255 ? 1 : 0); count += (img.at<uchar>(row, col - 1) == 255 ? 1 : 0); count += (img.at<uchar>(row, col + 1) == 255 ? 1 : 0); count += (img.at<uchar>(row + 1, col - 1) == 255 ? 1 : 0); count += (img.at<uchar>(row + 1, col) == 255 ? 1 : 0); count += (img.at<uchar>(row + 1, col + 1) == 255 ? 1 : 0); if (count == 1) { return true; } } return false; } // 函数功能:Rosenfeld细化算法 void RosenfeldThinning(Mat& srcImage) { int rows = srcImage.rows; int cols = srcImage.cols; bool isChanged = true; while (isChanged) { isChanged = false; Mat tmpImage = srcImage.clone(); for (int i = 1; i < rows - 1; i++) { for (int j = 1; j < cols - 1; j++) { if (IsInnerBoundary(tmpImage, i, j)) { srcImage.at<uchar>(i, j) = 255; isChanged = true; } } } tmpImage = srcImage.clone(); for (int i = 1; i < rows - 1; i++) { for (int j = 1; j < cols - 1; j++) { if (IsInnerBoundary(tmpImage, i, j)) { srcImage.at<uchar>(i, j) = 255; isChanged = true; } } } } } int main() { Mat srcImage = imread("test.png"); // 读取测试图像 if (srcImage.empty()) { cout << "can't open the image!" << endl; return -1; } imshow("srcImage", srcImage); Mat binaryImage = BinaryImage(srcImage); // 二值化图像 imshow("binaryImage", binaryImage); RosenfeldThinning(binaryImage); // Rosenfeld细化算法 imshow("thinningImage", binaryImage); waitKey(0); return 0; } ``` 其中,`BinaryImage` 函数用于将输入的彩色图像转化为二值图像,`IsInnerBoundary` 函数用于判断像素是否在边界内,`RosenfeldThinning` 函数实现了Rosenfeld细化算法。在 `main` 函数中,我们首先读取测试图像,然后将其转化为二值图像。接着,我们调用 `RosenfeldThinning` 函数进行细化,最后显示细化后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值