EmguCV中CvInvoke.cvFindContours和CvInvoke.cvMinAreaRect2有一些图片无法找出最小包围矩阵

澄澈秋水丶 2016-09-22 10:24:14

这一张图片能够给很准确的识别并画出最小包围矩阵

这一张的识别就有问题(和图片角度无关,第一张找出最小包围矩阵后做过旋转变换)

这是两张图片的二值化结果,可以看出识别不出的原因和二值化后内部黑色像素有关,有没有大神指导一下这个问题怎么解决!
...全文
1064 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
good_jobs 2016-09-30
  • 打赏
  • 举报
回复
emgu 大津阈值自动二值化,可以试一试
澄澈秋水丶 2016-09-22
  • 打赏
  • 举报
回复
下面是我的实现的主要代码

            IntPtr Dyncontour = new IntPtr();//存放检测到的图像块的首地址
            IntPtr Dynstorage = CvInvoke.cvCreateMemStorage(0);
            int n = CvInvoke.cvFindContours(b, Dynstorage, ref Dyncontour, StructSize.MCvContour
                , Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL, Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN             _APPROX_SIMPLE, new Point(0, 0));
             MCvBox2D rect;
                rect = CvInvoke.cvMinAreaRect2(Dyncontour, Dynstorage);
                PointF[] rect_p = new PointF[4];
                CvInvoke.cvBoxPoints(rect, rect_p);
                Point[] pt = new Point[4];
                for (int i = 0; i < 4; i++)
                {
                    pt[i].X = (int)rect_p[i].X;
                    pt[i].Y = (int)rect_p[i].Y;
                }
                CvInvoke.cvLine(a, pt[0], pt[1], new MCvScalar(255, 255, 255), 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
                CvInvoke.cvLine(a, pt[1], pt[2], new MCvScalar(255, 255, 255), 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
                CvInvoke.cvLine(a, pt[2], pt[3], new MCvScalar(255, 255, 255), 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
                CvInvoke.cvLine(a, pt[3], pt[0], new MCvScalar(255, 255, 255), 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
澄澈秋水丶 2016-09-22
  • 打赏
  • 举报
回复
来个人啊啊啊啊啊啊啊啊啊啊~~~~~~
内容概要:本文系统阐述了基于矩约束的最大熵方法在扩展不确定度评估的理论与应用,提供了一套完整的Matlab代码实现方案。该方法依据最大熵原理,在仅知样本的均值、方差、偏度、峰度等低阶矩信息的前提下,通过求解拉格朗日乘子,推导出满足这些矩约束且信息熵最大的最优概率密度函数,从而实现对测量结果的非参数化、无偏估计。相较于传统依赖正态分布假设的评估方式,该方法更具普适性与鲁棒性,尤其适用于处理非对称、非高斯等复杂分布的实际测量数据。文详细论述了理论模型的构建、数值求解算法的设计、概率密度函数的重建过程,并通过典型算例验证了其在提高评估准确性方面的优越性能。; 适合人群:具备概率统计、信息论基础知识及Matlab编程能力,从事精密测量、实验数据分析、质量控制、计量科学等相关领域的研究人员、工程师及研究生。; 使用场景及目标:①解决传统扩展不确定度评估因错误分布假设导致的系统性偏差问题;②在缺乏先验分布知识的情况下,对复杂测量数据进行客观、稳健的不确定度评定;③为高精度科学实验、工业检测及计量认证提供理论严谨、工具完备的技术支撑。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现,重点关注拉格朗日乘子的迭代求解、熵最大化过程及PDF重构等核心环节,并尝试代入实际数据进行验证与拓展,以充分掌握该方法的应用精髓。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧