用OpenCv可以搞定 两个函数: 
cvGetPerspectiveTransform  
cvWarpPerspective

不多说了 给你段代码:

C/C++ code CvPoint2D32f srcpoints[4]; CvPoint2D32f dstpoints[4]; srcpoints[0].x=o0x; //原图像当中四个点的位置 srcpoints[0].y=o0y; srcpoints[1].x=o1x; srcpoints[1].y=o1y; srcpoints[2].x=o2x; srcpoints[2].y=o2y; srcpoints[3].x=o3x; srcpoints[3].y=o3y; dstpoints[0].x=xofst0; //变换后对应的四个位置 dstpoints[0].y=yofst0; dstpoints[1].x=xofst1; dstpoints[1].y=yofst1; dstpoints[3].x=xofst2; dstpoints[3].y=yofst2; dstpoints[2].x=xofst3; dstpoints[2].y=yofst3; cvGetPerspectiveTransform(srcpoints,dstpoints,&mat ); //取得透视变换矩阵 cvWarpPerspective(src,dst,&mat,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,cvScalarAll(0)); //进行透视变换

网站转载的

staticint ComputePixel(float x, float y, outfloat x1, outfloat y1)
{
double r, nn;

if (x ==0&& y ==0)
{
x1 = x;
y1 = y;
return1;
}

nn = Math.Sqrt(x * x + y * y);
r = (Math.Abs(x) > Math.Abs(y)) ? Math.Abs(nn / x) : Math.Abs(nn / y);

x1 = (float)(r * x);
y1 = (float)(r * y);

return1;
}

static Color GetPixelColorInterpolated(ref Bitmap image, float x, float y)
{
int xi = (int)(x);
if (x <0) xi--;
int yi = (int)(y);
if (y <0) yi--;

if (xi <-1|| xi >= image.Width || yi <-1|| yi >= image.Height)
{
return GetPixelColorWithOverflow(ref image, -999, -999);
}

//get four neighbouring pixels
if ((xi +1) < image.Width && xi >=0&& (yi +1) < image.Height && yi >=0)
{
ushort wt1 = (ushort)((x - xi) *256.0f), wt2 = (ushort)((y - yi) *256.0f);
ushort wd = (ushort)(wt1 * wt2 >>8);
ushort wb = (ushort)(wt1 - wd);
ushort wc = (ushort)(wt2 - wd);
ushort wa = (ushort)(256- wt1 - wc);
ushort wrr, wgg, wbb;

Color clr = image.GetPixel(xi, yi);
wbb = (ushort)(wa * clr.B); wgg = (ushort)(wa * clr.G); wrr = (ushort)(wa * clr.R);

clr = image.GetPixel(xi +1, yi);
wbb += (ushort)(wb * clr.B); wgg += (ushort)(wb * clr.G); wrr += (ushort)(wb * clr.R);

clr = image.GetPixel(xi, yi +1);
wbb += (ushort)(wc * clr.B); wgg += (ushort)(wc * clr.G); wrr += (ushort)(wc * clr.R);

clr = image.GetPixel(xi +1, yi +1);
wbb += (ushort)(wd * clr.B); wgg += (ushort)(wd * clr.G); wrr += (ushort)(wd * clr.R);

return Color.FromArgb(255, wrr >>8, wgg >>8, wbb >>8);
}
else
{
float t1 = x - xi, t2 = y - yi;
float d = t1 * t2;
float b = t1 - d;
float c = t2 - d;
float a =1- t1 - c;

Color rgb11, rgb21, rgb12, rgb22;
rgb11 = GetPixelColorWithOverflow(ref image, xi, yi);
rgb21 = GetPixelColorWithOverflow(ref image, xi +1, yi);
rgb12 = GetPixelColorWithOverflow(ref image, xi, yi +1);
rgb22 = GetPixelColorWithOverflow(ref image, xi +1, yi +1);

//calculate linear interpolation
return Color.FromArgb(255,
(byte)(a * rgb11.R + b * rgb21.R + c * rgb12.R + d * rgb22.R),
(byte)(a * rgb11.G + b * rgb21.G + c * rgb12.G + d * rgb22.G),
(byte)(a * rgb11.B + b * rgb21.B + c * rgb12.B + d * rgb22.B));
}
}

static Color GetPixelColorWithOverflow(ref Bitmap image, long x, long y)
{
if (!IsInside(ref image, x, y))
{
return Color.FromArgb(255, 255, 255, 255);
}

return image.GetPixel((int)x, (int)y);
}

staticbool IsInside(ref Bitmap image, long x, long y)
{
return (0<= y && y < image.Height &&0<= x && x < image.Width);
}

privatevoid transformEllipseToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap image =new Bitmap("D:\\PSD\\info1.jpg");

int x, y;
float x1, y1;
float fx, fy, xmid, ymid, ar;
Bitmap image2 =new Bitmap(image);

xmid = (float)(image.Width /2.0);
ymid = (float)(image.Height /2.0);
ar = (float)(image.Height) / (float)(image.Width);
for (y =0; y < image.Height; y++)
{
for (x =0; x < image.Width; x++)
{
ComputePixel(ar * (x - xmid), y - ymid, out fx, out fy);
x1 = xmid + fx / ar;
y1 = ymid + fy;

image2.SetPixel(x, y, GetPixelColorInterpolated(ref image, x1, y1));
}
}

this.pictureBox1.Image = image2;
}

这个文章不错

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html#warp-affine

http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=8940&p=34421&hilit=%E9%80%8F+%E8%A7%86+%E5%8F%98+%E6%8D%A2#p34421

转载于:https://www.cnblogs.com/zhixing/archive/2012/03/28/2422506.html

不规则四边形贴图(转)相关推荐

  1. 两个不规则四边形IOU计算方法

    1 引言 我们常用的目标检测为矩形框检测,但是我们有时检测出来的框为不规则的四边形,如下图为常见的遥感图像,此时我们在使用矩形框计算IOU的方式就不再适用.我们可以将问题进行抽象,有木有计算两个不规则 ...

  2. 点在不规则图形内算法python_目标检测算法中规则矩形和不规则四边形IOU的Python实现...

    交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,我们在进行目标检测算法测试时,重要的指标,是产生的预测框(candidate bound)与标记框(grou ...

  3. python3实现cv2+numpy裁剪不规则四边形图片

    python3实现cv2+numpy裁剪不规则四边形图片 功能 效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/a3dd447909db43489050b3b8 ...

  4. 不规则四边形填充平面 - Townscaper 网格生成算法复现

    不规则四边形填充平面 - Townscaper 网格生成算法复现 源码 github.com/FutaAlice/OrganicQuadGrid 前言 Townscaper,一款关于城镇建造的游戏. ...

  5. 计算几何@_@不规则四边形求法

    一.托勒密定理(感觉有联系) 凸四边形 托勒密定理指出凸四边形两组对边乘积之和不小于两条对角线的乘积,等号当且仅当四边形为圆内接四边形,或退 化为直线取得(这时也称为欧拉定理).狭义的托勒密定理也可以 ...

  6. 计算不规则四边形的面积+代码实现

    求两点间距离 /***** 求两点间距离*****/ float getDistance(CvPoint pointO, CvPoint pointA) {float distance;distanc ...

  7. 不规则四边形回归框计算IOU与NMS

    前言 在复现DPR论文过程中,遇到了计算IOU和NMS的问题.传统目标检测大多基于anchor,给出的预测也是矩形框,所以需要进行相应的修改,以套用到不规则四边形回归框上. 注1:编者水平有限,如有谬 ...

  8. 【最简洁】一句CSS3代码实现不规则自定义背景图拼接样式,多用于异形弹窗背景图

    如果阁下想玩进阶版的背景图样式请移步[进阶版九宫格背景图片]如何仅仅依靠background的几个属性组合搭配出酷炫的背景图片效果,并自适应任何宽高效果?_你挚爱的强哥❤给你发来1条消息❤-CSDN博 ...

  9. 不规则四边形的平行四边形化

    这个我是应用到bmp文件中,然后在图像中任意画个四个点,最后平行四边形化,这个的重点 1.bmp的读取顺序,然后你的实际坐标和象素点上的坐标要对上的话,要反转. 2.四边形的平行四边化,这个比较简单, ...

最新文章

  1. 多线程EXecutor 柜架示例
  2. VTK:PolyData之RemoveOutsideSurface
  3. 整数划分递归相关问题
  4. 搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目
  5. Android IPC系列(一):AIDL使用详解
  6. [react] 怎么在JSX里属性可以被覆盖吗?覆盖的原则是什么?
  7. 个性化联邦学习算法框架发布,赋能AI药物研发
  8. 以编程方式在ASP.NET MVC中使用多个HTML Select控件
  9. hibernate fetch属性
  10. torch summary_留学论文如何5分钟搞定写作Summary,速看!
  11. 如何关闭谷歌的安全搜索?
  12. 【交易所相关】网关、席位、交易单元
  13. CAD给标注尺寸加上下公差的方法
  14. IntelliJ IDEA常用设置及快捷键以及自定义
  15. Directx11学习笔记【十】 画一个简单的三角形
  16. ICH1/ICH2/ICH3/ICH4/ICH5/ICH6/ICH7/ICH8/ICH9的区别和联系
  17. Python制作卡点视频
  18. 夏令时和时区最佳实践
  19. LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配
  20. error: Failed dependencies:

热门文章

  1. 数字 02 vivado 关于IP核的配置步骤
  2. Linux重定向几种方法
  3. 20岁就业难、30岁被裁员、35岁瓶颈期……打工人真的没有退路了吗?
  4. VUE的双向数据绑定原理
  5. c++报错:lvalue required as left operand of assignment
  6. U盘安装Ubuntu 12.4的简易指导
  7. STC8H8K系列汇编和C51实战——秒倒计时器(可自行设定初值)(51版)
  8. Sliverlight常见错误集锦
  9. 上海30家热门茶餐厅
  10. 揭开RTMP播放流程的神秘面纱