首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

如何样计算图片上两点的长度CM

2013-03-26 
怎么样计算图片上两点的长度CM如果题,不知道用什么算法呀。[解决办法]没做过类似的东西,不过知道2点坐标,可

怎么样计算图片上两点的长度CM
如果题,不知道用什么算法呀。
[解决办法]
没做过类似的东西,不过知道2点坐标,可以计算出2点之间有多少个像素距离,然后在换算像素和厘米之间的关系,应该还和屏幕分辨率有关,不过应该都有现成的api函数的
[解决办法]
应该可以用三角函数(直角三边),先计算出两边,即可得出两点的距离。
[解决办法]
先计算两点间的像素多少,根据dpi(每英寸多少像素)换算出多少厘米。
以前写的,希望有点用


// 以下代码适用c++builder,windows系统

//---------------------------------------
// 功能:获取桌面dpi
//---------------------------------------
int __fastcall GetDeskTopDpi()
{
HDChdc;
hdc = ::GetDC(::GetDesktopWindow());
int dpi = ::GetDeviceCaps(hdc, LOGPIXELSX);
::ReleaseDC(::GetDesktopWindow(), hdc);
return dpi;
}

//---------------------------------------
// 功能:获取打印机dpi
//---------------------------------------
int __fastcall GetPrinterDpi()
{
return  ::GetDeviceCaps(Printer()->Handle, LOGPIXELSX);
}

//---------------------------------------
// 功能:多少mm(毫米)为多少像素
// 参数:dpi是解析度, mm是毫米
//---------------------------------------
double __fastcall MmToPixel(double dpi, double mm)
{
// 每mm(毫米)多少像素公式为 dpi / 25.4
return (dpi / 25.4 * mm);
}

//---------------------------------------
// 功能:多少像素为多少毫米
// 参数:dpi是解析度, pixel是像素
//---------------------------------------
double __fastcall PixelToMm(double dpi, double pixel)
{
return (pixel / (dpi / 25.4));
}

[解决办法]
得有长度和像素间转换的方法。
[解决办法]
1、如果是摄像机实时取得的,可以根据摄像机的光学参数来求。需要光学成像、投影几何,立体几何的知识。

2、静态图片上的,如果已知图像分辨率DPI(也就是每英寸有多少个点),通过求取两点间隔像素数来求得距离。

热点排行