返回首页

{A}介绍
今天的图像处理技术的帮助,在许多领域,如确定肿瘤,文本提取,检查图像,我们...在这个算法中,我们可以得到图像中的线的角度。当然也有几种方法来做到这一点,进步算法,但是这是一个简单的算法。特点在真实图像的几种颜色的作品。简单地实现。获取线的长度。很轻,重码。源代码
我已经注释的代码清楚。首先,我们必须定义一个全局CImage,然后从硬盘加载图像文件:

CImage i;

之后,我们需要绘制一个图像时的OnPaint()函数清除:{C}
接下来,我们加载的图像:
void CDetectangleoflineDlg::OnBnClickedButton1()//load image

{

  CFileDialog f(1);//to call open file dialog

  TCHAR tc[260];CString s;GetCurrentDirectory(260,tc);s=tc;

  if(f.DoModal()==IDOK){//image selected

	if(!i.IsNull())//image isn't null

		i.Destroy();//destroy image

          i.Load(f.GetFolderPath()+_T("\\")+f.GetFileName());

          //load image to i (CImage)

	OnPaint();//call draw image

	b.EnableWindow(1);

  }

}

最后,我们使用的处理算法,以确定角度:{体C3}
{S0的}算法
首先,我们需要'C',颜色为背景色,颜色的形象,'C1'点。我们必须找到该行的第一个和最后一个点(x1,y1)和(X2,Y2)。我们x1的默认值设置为-1。这意味着我们没有找到第一点。检测第一点,我们移动,看看周围的图像(X,Y)。当C1 = C!放大器;放大器,X == -1,我们发现(X1,Y1)。我们想象一个像'D'和虚拟半径与默认值10。之后,我们的移动和再看看,当C =ç放大器;放大器; SQRT((X-X2)^ 2(Y-Y2)^ 2))<= D,这点与以前的点和线。我们将继续,直到最后。最后,我们会发现(X1,Y2),(X2,Y2),我们可以得到的长度线和角度的反正切行。{的C4}

回答

评论会员:大文章。请保持它 时间:2012/02/06
NV3:你使用的算法是非常基本的和失败,但在所有最简单的情况下。它假定像素(0,0)代表背景颜色。与该行直,不失真。有线路更好的算法检测任何图像处理教科书会告诉你。

在此条件下,承认你可能想使用forground像素或代替条件。否则,你需要该行所有三色组成的背景不同于
评论会员:游客 时间:2012/02/06
DavidCrow:你一定要使用CPaintDCDC(本),而不是DCCClientDC(本),否则手绘的面积永远不会验证有一个机会,将会产生不必要的OnPaint消息,因为该操作系统不知道画已完成。我建议你​​检查的CPaintDC和CClientDC类单证,因为示例代码可以是非常危险的新手程序员,只是直流条款。我假设你从你的代码(你不应该做的),直接调用OnPaint()中,看到了有没有效果,所以改变CPaintDCCClientDC,而不是你应该尝试的Invalidate();然后,而不是调用UpdateWindow()的OnPaint()
Kanasz罗伯特:什么是负标记,我以为我做了一个很好的建议:S
评论会员:游客 时间:2012/02/06
马赫迪Nejadsahebi:你的代码将是一个有点更容易阅读,如果有只有一个每行语句。否则,好的工作。此外,你认为:"一个人的工资上涨是另一个人的价格上涨。"-哈罗德・威尔逊"防火并不意味着火将永远不会到来,这意味着发生火灾时,你将能够承受的。"-迈克尔・西蒙斯"给我一个社区,服从十诫,我会告诉你一个不太拥挤的监狱系统。"-无名氏
马赫迪Nejadsahebi
评论会员:游客 时间:2012/02/06
非常有趣的你有我的5