高分300在线等待 图象问题求解:

时间:2022-09-02 07:55:27
如果问题比较简单,请谅解。此为本人毕业课题:
    如果存在一副有扫描仪扫好的曲线图,如何取得其各点的坐标?

16 个解决方案

#1


这要看你:
   1。把坐标建立在什么位置
   2。坐标轴的量度单位
 然后根据以上条件和图象的扫描分辨率求出量度单位和图象点阵之间的对应关系,来度量曲线上的每一个点,即给出每个点的坐标值。
  仅提供思路。

#2


to cjy(cjy):
    坐标的建立、度量单位(应该是动态建立坐标,根据用户需要把坐标建立在什么地方而定。)
    
    问题:如何取点  (通过色差判断?)

#3


UP

#4


利用Tcanvas中属性Pixels进行逐行像素判断,允许一定误差,若像素差别较大则记下坐标

#5


关注中...

#6


谢谢各位,继续等待……

#7


UP

#8


使用TCanvas.Pixels属性
TCanvas.Pixels属性是一个二维数组,它的每个元素代表窗体表面或客户区的一个像素的TColor值。
窗体左上角的像素为:Canvas.Pixels[0,0];
而右上角为:Canvas.Pixels{clientwidth,clientheight}
一般情况下,很少需要访问窗体的单个像素,因此通常不需要用到Pixels属性,用它太慢了。如果使用GetPixel()和SetPixel()来访问像素,Microsoft也承认这两个函数有缺陷,效率不高,因为这两个函数都依赖于24位的R B值。如果不是24位R G B设备,当把R G B转换为设备像素格式时会出现颜色匹配失真。为了快速地操纵像素,可以使用TBitmap.Scanline数组。如果只是要一次获得或设置一两个像素,可使用Pixels属性。

#9


坐标系统和映射模式

大多数GDI函数需要指定坐标集,用来确定绘图的位置。这些坐标基于一个度量单元,诸如像素。通常,GDI以垂直方向和水平方向上的轴来定位,也就是说,通过增减X、Y *坐标值来移动绘图位置。Win32依赖于两个因素来执行绘图函数:坐标系统和映射模式。
Win32坐标系统与任何其他坐标系统没有什区别。指定了一个点的X、Y坐标,Win32就在绘图表
面定位这个点。Win32使用3种坐标系统,分别是设备、逻辑和通用坐标系。Windows 95不支持通用坐标系(位图旋转、裁剪、扭曲等)

设备坐标系

设备坐标系是指Win32运行于的设备。它以像素为单位进行度量,定位方向是水平轴从左右、垂直轴从上到下增加。例如,如果在640×480的显示器上运行Windows,设备左上角坐标为(0,0),而右下角坐标为(649,479)。

逻辑坐标系

在Win32中,有设备环境(或称DC)的区域通常使用逻辑坐标系。设备坐标系与逻辑坐标系的区别稍后解释。我们先从屏幕、窗体、窗体的客户区开始。
屏幕坐标系
屏幕坐标系是指显示设备,因此它是以像素为度量单位的坐标系,在6 4 0×4 8 0的显示器上,Screen.Width和Screen.Hight分别为640和480像素。要获取屏幕的设备环境,可以使用Win32 API中的GetDC()函数。相应地,必须调用RaleaseDC()函数来释放所获取的设备环境。

窗体坐标系

窗体坐标系也叫窗口坐标系,指整个窗体或窗口,包括标题栏和边框。Delphi5没有直接提供访问绘图区域DC的属性(不知现在有没有),但可以通过使用Win32 API中的GetWindowsDC()函数来获得DC。例如:MyDC: = GetWindowDC(Form1.Handle) ;这个函数返回指定窗口的设备环境。注意可以通过TCanvas对象来操纵由GetDC()和GetWindow()所获得的设备环境,进而通过设备环境来调用TCanvas的方法。你只要创建一个TCanvas实例,然后把GetDC()GetWindowsDC()的结果赋给TCanvas.Handle属性。这个方法可行,因为TCanvas拥有这个句柄,当画布对象释放时将释放该设备环境。窗体的客户区坐标是指窗体的客户区域,其设备环境为窗体画布的Handle特性,其尺寸可以由Canvas.ClientWidth和Canvas.ClientHeight获得。

#10


关注

#11


好累,希望对你有帮助


要下班了,哈哈哈

#12


回去试试再说.

#13


to myling(阿德):
   非常感谢!

#14


to myling(阿德):
   可否给个联系方式?QQ:434856

#15


关注

#16


qq: 18972307


呵呵,其实找本GDI的书,上面的应该都有介绍吧,

上面的云云其实摘自《delphi5 开发人员指南》的第8章,呵呵

再找本图形学的书看看,我们上学期有一本,好厚呀,也很难 :-(

#1


这要看你:
   1。把坐标建立在什么位置
   2。坐标轴的量度单位
 然后根据以上条件和图象的扫描分辨率求出量度单位和图象点阵之间的对应关系,来度量曲线上的每一个点,即给出每个点的坐标值。
  仅提供思路。

#2


to cjy(cjy):
    坐标的建立、度量单位(应该是动态建立坐标,根据用户需要把坐标建立在什么地方而定。)
    
    问题:如何取点  (通过色差判断?)

#3


UP

#4


利用Tcanvas中属性Pixels进行逐行像素判断,允许一定误差,若像素差别较大则记下坐标

#5


关注中...

#6


谢谢各位,继续等待……

#7


UP

#8


使用TCanvas.Pixels属性
TCanvas.Pixels属性是一个二维数组,它的每个元素代表窗体表面或客户区的一个像素的TColor值。
窗体左上角的像素为:Canvas.Pixels[0,0];
而右上角为:Canvas.Pixels{clientwidth,clientheight}
一般情况下,很少需要访问窗体的单个像素,因此通常不需要用到Pixels属性,用它太慢了。如果使用GetPixel()和SetPixel()来访问像素,Microsoft也承认这两个函数有缺陷,效率不高,因为这两个函数都依赖于24位的R B值。如果不是24位R G B设备,当把R G B转换为设备像素格式时会出现颜色匹配失真。为了快速地操纵像素,可以使用TBitmap.Scanline数组。如果只是要一次获得或设置一两个像素,可使用Pixels属性。

#9


坐标系统和映射模式

大多数GDI函数需要指定坐标集,用来确定绘图的位置。这些坐标基于一个度量单元,诸如像素。通常,GDI以垂直方向和水平方向上的轴来定位,也就是说,通过增减X、Y *坐标值来移动绘图位置。Win32依赖于两个因素来执行绘图函数:坐标系统和映射模式。
Win32坐标系统与任何其他坐标系统没有什区别。指定了一个点的X、Y坐标,Win32就在绘图表
面定位这个点。Win32使用3种坐标系统,分别是设备、逻辑和通用坐标系。Windows 95不支持通用坐标系(位图旋转、裁剪、扭曲等)

设备坐标系

设备坐标系是指Win32运行于的设备。它以像素为单位进行度量,定位方向是水平轴从左右、垂直轴从上到下增加。例如,如果在640×480的显示器上运行Windows,设备左上角坐标为(0,0),而右下角坐标为(649,479)。

逻辑坐标系

在Win32中,有设备环境(或称DC)的区域通常使用逻辑坐标系。设备坐标系与逻辑坐标系的区别稍后解释。我们先从屏幕、窗体、窗体的客户区开始。
屏幕坐标系
屏幕坐标系是指显示设备,因此它是以像素为度量单位的坐标系,在6 4 0×4 8 0的显示器上,Screen.Width和Screen.Hight分别为640和480像素。要获取屏幕的设备环境,可以使用Win32 API中的GetDC()函数。相应地,必须调用RaleaseDC()函数来释放所获取的设备环境。

窗体坐标系

窗体坐标系也叫窗口坐标系,指整个窗体或窗口,包括标题栏和边框。Delphi5没有直接提供访问绘图区域DC的属性(不知现在有没有),但可以通过使用Win32 API中的GetWindowsDC()函数来获得DC。例如:MyDC: = GetWindowDC(Form1.Handle) ;这个函数返回指定窗口的设备环境。注意可以通过TCanvas对象来操纵由GetDC()和GetWindow()所获得的设备环境,进而通过设备环境来调用TCanvas的方法。你只要创建一个TCanvas实例,然后把GetDC()GetWindowsDC()的结果赋给TCanvas.Handle属性。这个方法可行,因为TCanvas拥有这个句柄,当画布对象释放时将释放该设备环境。窗体的客户区坐标是指窗体的客户区域,其设备环境为窗体画布的Handle特性,其尺寸可以由Canvas.ClientWidth和Canvas.ClientHeight获得。

#10


关注

#11


好累,希望对你有帮助


要下班了,哈哈哈

#12


回去试试再说.

#13


to myling(阿德):
   非常感谢!

#14


to myling(阿德):
   可否给个联系方式?QQ:434856

#15


关注

#16


qq: 18972307


呵呵,其实找本GDI的书,上面的应该都有介绍吧,

上面的云云其实摘自《delphi5 开发人员指南》的第8章,呵呵

再找本图形学的书看看,我们上学期有一本,好厚呀,也很难 :-(