精华内容
下载资源
问答
  • 这是一组四边形植物边框PPT背景图片,第一PPT模板网提供幻灯片背景图片免费下载; 第一张PPT背景图片是四叶草PPT文本边框;第二张PPT背景图片是紫色花卉PPT文本边框;第三张,第四张PPT背景图片是简洁的PPT文本边框...
  • VB6 在笛卡尔坐标系中用PlgBlt函数以坐标点为顶点贴平行四边形图片
  • 这是一组四边形植物边框PPT背景图片,第一PPT模板网提供幻灯片背景图片免费下载; 第一张PPT背景图片是四叶草PPT文本边框;第二张PPT背景图片是紫色花卉PPT文本边框;第三张,第四张PPT背景图片是简洁的PPT文本边框...
  • cocos2d-x画不规则四边形图片

    千次阅读 2012-01-04 17:27:08
    #ifndef __MY_SPRITE_H__ #define __MY_SPRITE_H__ #include "cocos2d.h" typedef struct  {  cocos2d::CCPoint bl;  cocos2d::CCPoint br;  cocos2d::CCPoint tl;  cocos2d::CCPoint tr;...class M
      
    

    #ifndef __MY_SPRITE_H__
    #define __MY_SPRITE_H__

    #include "cocos2d.h"

    typedef struct 
    {
     cocos2d::CCPoint bl;
     cocos2d::CCPoint br;
     cocos2d::CCPoint tl;
     cocos2d::CCPoint tr;
    }My4V;

    class MySprite : public cocos2d::CCSprite
    {
    public:
     void render4V(My4V my4v)
     {
    //   if (this->getTexture())
    //   {
    //    this->getTexture()->setAliasTexParameters();
    //   }
      m_sQuad.bl.vertices = cocos2d::vertex3(my4v.bl.x, my4v.bl.y, 0);
      m_sQuad.br.vertices = cocos2d::vertex3(my4v.br.x, my4v.br.y, 0);
      m_sQuad.tl.vertices = cocos2d::vertex3(my4v.tl.x, my4v.tl.y, 0);
      m_sQuad.tr.vertices = cocos2d::vertex3(my4v.tr.x, my4v.tr.y, 0);
     }
    };

    #endif


    展开全文
  • 四边形网格

    千次阅读 2019-10-28 08:03:11
    四边形网格定义 四边形网格,顾名思义,它的每个网格面片是一个四边形。有时候,四边形网格里会掺杂一些三角形面片,我们把这类网格也都叫做四边形网格。三角形网格常见于逆向建模领域,比如通过三维扫描仪扫描得到...

    原文链接

    四边形网格定义

    • 四边形网格,顾名思义,它的每个网格面片是一个四边形。有时候,四边形网格里会掺杂一些三角形面片,我们把这类网格也都叫做四边形网格。三角形网格常见于逆向建模领域,比如通过三维扫描仪扫描得到的网格。四边形网格常见于正向建模系统,如3dsMax,ZBrush等。这主要是因为点云或者三角形网格转成四边形网格有一定的难度,特别是高质量的四边形网格。
    • 正则点:内点-度数为4;边界点(非拐点(Corner))-度数为3;边界点(凸拐点)-度数为2;边界点(凹拐点)-度数为4
    • 分类:主要是根据顶点的正则度来进行分类。如下图所示,第一类网格为正则网格,所有顶点度数为4,只有特殊拓扑结构的网格能达到正则;第二类是半正则网格,它是分片正则的;第三类是度数半正则网格,它的顶点度数绝大部分是4;最后一类是无序的四边形网格,它有很多非正则点。
      quad_category

    四边形网格的优缺点

    与三角形网格相比,四边形网格有一些优点:

    • 特征边对齐:四边形网格的边可以很自然的与特征边进行对齐,边走向也可以很自然的与模型的几何特征走向对齐。
    • 样条曲面和细分曲面:样条曲面和Catmull-Clark细分曲面常见的定义域就是四边形
    • 纹理贴图:半正则的四边形网格,每个正则片可以很好的与图片对齐,有利于图片的采样精确性
      同时四边形网格也有一些缺点:
    • 四边形可能不共面

    高质量的四边形网格

    • 奇异点个数尽量少,布局合理
    • 面片的边走向要与几何特征走向对齐
    • 边长尽量均匀化,或者自适应几何特征

    生成四边形网格的方法

    正向建模软件可以直接创建四边形网格。逆向建模的网格一般是三角形网格,需要方法把三角形网格转成四边形网格

    • Catmull-Clark细分三角形可以得到一个四边形网格,它的质量比较低,奇异点多,边走向不好。后续可以应用一些四边形网格优化的方法
    • 参数化方法
    • Morse-Smale complex 方法
    • 网格分割后,分片参数化的方法

    四边形网格的处理

    • 网格简化
    • 几何优化
    • 高阶曲面拟合,细分曲面拟合
    • 网格拓扑优化

    有兴趣的读者,欢迎参考视频版本

    展开全文
  • PPT将图片变为平行四边形形状

    千次阅读 2020-02-22 11:03:14
    点击图片→格式→ 旋转→ 其它旋转选项→ 三维旋转

    点击图片→ 格式→ 旋转→ 其它旋转选项→ 三维旋转

     

    展开全文
  • // 功能: 图片里取出四边形 // 环境搭建: // 参考地址:http://vitrum.github.io/2015/07/28/Opencv-%E5%BA%94%E7%94%A8%EF%BC%8C%E5%9B%BE%E7%89%87%E9%87%8C%E5%8F%96%E5%87%BA%E5%9B%9B%E8%BE%B9%E5%BD%A2/ /...

    1、下载Visual Studio2013 :http://pan.baidu.com/s/1qYmAZJe ,直接解压安装;

    2、下载openCV: https://sourceforge.net/projects/opencvlibrary/files/ ;建议下载3.0版本的,3.1以后的版本里面不再有x86,但是vs2013中不支持V14的编译器,所以需要注意vs和opencv的版本对应,负责容易出现未知问题; 此处请参考: http://blog.csdn.net/poem_qianmo/article/details/19809337

    3、配置vs: http://blog.csdn.net/u013105549/article/details/50493069

    4、注意: 引用照片时请注意照片路径: 问题基本是图片路径的问题。应将程序相应的图像放置在工程目录下(和cpp源文件同一目录下)。: http://blog.csdn.net/ture_dream/article/details/52600897

    4、截取四边形原理: http://www.cnblogs.com/frombeijingwithlove/p/4226489.html 

    http://vitrum.github.io/2015/07/28/Opencv-%E5%BA%94%E7%94%A8%EF%BC%8C%E5%9B%BE%E7%89%87%E9%87%8C%E5%8F%96%E5%87%BA%E5%9B%9B%E8%BE%B9%E5%BD%A2/

    5、截取的具体代码:

    //
    //  opencv.cpp
    //  功能: 图片里取出四边形
    //  环境搭建: 
    //  参考地址:http://vitrum.github.io/2015/07/28/Opencv-%E5%BA%94%E7%94%A8%EF%BC%8C%E5%9B%BE%E7%89%87%E9%87%8C%E5%8F%96%E5%87%BA%E5%9B%9B%E8%BE%B9%E5%BD%A2/ 
    //  
    //
    
    
    #include <opencv2/opencv.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    
    
    using namespace cv;
    using namespace std;
    
    /**
    * 边缘检测
    * @param gray - grayscale input image
    * @param canny - output edge image
    */
    void getCanny(Mat gray, Mat &canny) {
    	Mat thres;
    	double high_thres = threshold(gray, thres, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU), low_thres = high_thres * 0.5;
    	Canny(gray, canny, low_thres, high_thres);
    }
    
    struct Line {
    	Point _p1;
    	Point _p2;
    	Point _center;
    
    	Line(Point p1, Point p2) {
    		_p1 = p1;
    		_p2 = p2;
    		_center = Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);
    	}
    };
    
    bool cmp_y(const Line &p1, const Line &p2) {
    	return p1._center.y < p2._center.y;
    }
    
    bool cmp_x(const Line &p1, const Line &p2) {
    	return p1._center.x < p2._center.x;
    }
    
    /**
    * Compute intersect point of two lines l1 and l2
    * @param l1
    * @param l2
    * @return Intersect Point
    */
    Point2f computeIntersect(Line l1, Line l2) {
    	int x1 = l1._p1.x, x2 = l1._p2.x, y1 = l1._p1.y, y2 = l1._p2.y;
    	int x3 = l2._p1.x, x4 = l2._p2.x, y3 = l2._p1.y, y4 = l2._p2.y;
    	if (float d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4)) {
    		Point2f pt;
    		pt.x = ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) / d;
    		pt.y = ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) / d;
    		return pt;
    	}
    	return Point2f(-1, -1);
    }
    
    void scan(String file, bool debug = false) {
    
    	// 读入原图
    	Mat img = imread(file);
    	
    	Mat img_proc;
    	int w = img.size().width, h = img.size().height, min_w = 200;
    	// 计算缩放比例
    	double scale = min(10.0, w * 1.0 / min_w);
    	int w_proc = w * 1.0 / scale, h_proc = h * 1.0 / scale;
    	// 缩小图片分辨率,提高计算速度
    	resize(img, img_proc, Size(w_proc, h_proc));
    	Mat img_dis = img_proc.clone();
    
    	/*获取纸的四个边*/
    	
    	Mat gray, canny;
    	cvtColor(img_proc, gray, CV_BGR2GRAY);
    	// 用canny算子进行边缘检测
    	getCanny(gray, canny);
    
    	// w_proc 就是缩小后的画面宽度,20是把间距20以内的线段延长拼接为一条直线
    	vector<Vec4i> lines;
    	vector<Line> horizontals, verticals;
    	HoughLinesP(canny, lines, 1, CV_PI / 180, w_proc / 3, w_proc / 3, 20);
    	for (size_t i = 0; i < lines.size(); i++) {
    		Vec4i v = lines[i];
    		double delta_x = v[0] - v[2], delta_y = v[1] - v[3];
    		Line l(Point(v[0], v[1]), Point(v[2], v[3]));
    		// get horizontal lines and vertical lines respectively
    		if (fabs(delta_x) > fabs(delta_y)) {
    			horizontals.push_back(l);
    		}
    		else {
    			verticals.push_back(l);
    		}
    		// for visualization only
    		if (debug)
    			line(img_proc, Point(v[0], v[1]), Point(v[2], v[3]), Scalar(0, 0, 255), 1, CV_AA);
    	}
    
    	// 边缘情况下,当没有足够的线检测
    	if (horizontals.size() < 2) {
    		if (horizontals.size() == 0 || horizontals[0]._center.y > h_proc / 2) {
    			horizontals.push_back(Line(Point(0, 0), Point(w_proc - 1, 0)));
    		}
    		if (horizontals.size() == 0 || horizontals[0]._center.y <= h_proc / 2) {
    			horizontals.push_back(Line(Point(0, h_proc - 1), Point(w_proc - 1, h_proc - 1)));
    		}
    	}
    	if (verticals.size() < 2) {
    		if (verticals.size() == 0 || verticals[0]._center.x > w_proc / 2) {
    			verticals.push_back(Line(Point(0, 0), Point(0, h_proc - 1)));
    		}
    		if (verticals.size() == 0 || verticals[0]._center.x <= w_proc / 2) {
    			verticals.push_back(Line(Point(w_proc - 1, 0), Point(w_proc - 1, h_proc - 1)));
    		}
    	}
    	// 按中心点排序
    	sort(horizontals.begin(), horizontals.end(), cmp_y);
    	sort(verticals.begin(), verticals.end(), cmp_x);
    	// for visualization only
    	if (debug) {
    		line(img_proc, horizontals[0]._p1, horizontals[0]._p2, Scalar(0, 255, 0), 2, CV_AA);
    		line(img_proc, horizontals[horizontals.size() - 1]._p1, horizontals[horizontals.size() - 1]._p2, Scalar(0, 255, 0), 2, CV_AA);
    		line(img_proc, verticals[0]._p1, verticals[0]._p2, Scalar(255, 0, 0), 2, CV_AA);
    		line(img_proc, verticals[verticals.size() - 1]._p1, verticals[verticals.size() - 1]._p2, Scalar(255, 0, 0), 2, CV_AA);
    	}
    
    	/* 透视变换 */
    
    	// define the destination image size: A4 - 200 PPI
    	int w_a4 = 1654, h_a4 = 2339;
    	//int w_a4 = 595, h_a4 = 842;
    	Mat dst = Mat::zeros(h_a4, w_a4, CV_8UC3);
    
    	// 求四顶点坐标 corners of destination image with the sequence [tl, tr, bl, br]
    	vector<Point2f> dst_pts, img_pts;
    	dst_pts.push_back(Point(0, 0));
    	dst_pts.push_back(Point(w_a4 - 1, 0));
    	dst_pts.push_back(Point(0, h_a4 - 1));
    	dst_pts.push_back(Point(w_a4 - 1, h_a4 - 1));
    
    	// corners of source image with the sequence [tl, tr, bl, br]
    	img_pts.push_back(computeIntersect(horizontals[0], verticals[0]));
    	img_pts.push_back(computeIntersect(horizontals[0], verticals[verticals.size() - 1]));
    	img_pts.push_back(computeIntersect(horizontals[horizontals.size() - 1], verticals[0]));
    	img_pts.push_back(computeIntersect(horizontals[horizontals.size() - 1], verticals[verticals.size() - 1]));
    
    	// 转换成原始图像比例尺
    	for (size_t i = 0; i < img_pts.size(); i++) {
    		// for visualization only
    		if (debug) {
    			circle(img_proc, img_pts[i], 10, Scalar(255, 255, 0), 3);
    		}
    		img_pts[i].x *= scale;
    		img_pts[i].y *= scale;
    	}
    
    	// 得到的变换矩阵 用getPerspectiveTransform计算转化矩阵,再用warpPerspective调用转化矩阵进行拉伸
    	Mat transmtx = getPerspectiveTransform(img_pts, dst_pts);
    
    	// 应用透视变换
    	warpPerspective(img, dst, transmtx, dst.size());
    
    	// 保存照片到本地
    	imwrite("dst.jpg", dst);
    
    	// for visualization only
    	if (debug) {
    		namedWindow("dst", CV_WINDOW_KEEPRATIO);
    		imshow("src", img_dis);
    		imshow("canny", canny);
    		imshow("img_proc", img_proc);
    		imshow("dst", dst);
    		waitKey(0);
    	}
    }
    
    int main(int argc, char** argv) {
    	string img_path[] = { "6.jpg", "images/doc2.jpg", "images/doc3.jpg" };
    	scan(img_path[0]);
    	return 0;
    }

    效果:

    原图:

    识别结果:

    转载于:https://my.oschina.net/freelili/blog/887879

    展开全文
  • AS3中不规则四边形图片填充方法

    千次阅读 2010-08-01 21:18:00
    最近在一个Flex项目需要在一些不规则的四边形填充背景图形,在网上狂google一把,发现Flash绘画API中的drawTriangles函数可以很好解决这个问题,我们可以通过绘制两个三角形组成一个四边形: drawTriangles...
  • 图片的像素点大小为1×1的小矩形,以图片左下角为坐标原点,建立图片的直角坐标系 b.四边形的左下点在Y轴上半轴任意位置,宽为Width(>100),高为Height(>10),且与X轴有负小角度夹角( 问题: 求取四边形所影响的...
  • 图片拉伸成类似平行四边形这样 直接上效果图 先不着急上代码, 如果你遇到opencv报以下错误的话, cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-z4706ql7\opencv\modules...
  • 写在前面:之前是先得到任意四边形的最小外接矩形,再使用opencv进行裁剪,但是这样会引入噪声。所以在此记录下,如何直接裁剪原任意四边形区域。 思路: 1.计算要裁剪区域四边形的相对水平方向的旋转角度; 2.将...
  • 平行四边形

    2019-01-12 19:11:58
    1.需求:平行四边形边框,四边形里面的文字水平垂直居中显示。 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt...
  • 前段时间导师给了一个任务,任务中包含一个功能,将一幅图像中的任意四边形区域映射为矩形区域。...将任意四边形图片转化为矩形的应用现在在我们身边也时常见到:安卓端的adobe reader最近(201...
  • 图像四边形标记

    2018-12-06 20:41:54
    标记图像中的四边形,鼠标左击确定特征点位置,然后回车键确定录入,录满四个点后,按s键保存结果,并开始录入下一张图片的特征点。若某个点录入错误,按住r键,重新开始录入该图片的特征点。
  • C#实现图片的任意四边形变形

    千次阅读 热门讨论 2009-06-23 17:38:00
    网上有类似的文章,但是只有算法没有例子,我这里做了一个例子,截几张图,大家看看。这张是没有做任何变换的图片,大小为360*360做了右上角和左下角坐标的变换后。3个顶点坐标都变换之后。效果还行吧。 
  • #include using namespace cv; typedef int s32; typedef long long s64; typedef s32 cfixed; typedef unsigned char u8;...#define cfixed_from_int(i) (((cfixed)(i)) ) #define cfixed_from_float(x) ((c
  • 这个FindSquares算是比较典型的综合技能项目吧,用到的小技巧还不少,我们先看一下几个函数吧, 函数static double angle的作用是求角度 根据余弦定理: 在平面座标中 通过计算变换,最后可以得到: ...
  • Problem F: 凹凸四边形

    2019-11-23 14:57:23
    四边形分为凸四边形和凹四边形,如下图,图1为凸四边形,图2为凹四边形。 在这里插入图片描述 在这里插入图片描述 按照连边顺序给出四边形的四个顶点坐标,判断该四边形是凹四边形还是凸四边形。 Input 输入有多组...
  • *以下技巧均源自于Lea Verou所著《CSSSecrets》 平行四边形 平行四边形的构造可以基于矩形通过skew()的变形属性进行斜向拉升得到(skew所用的坐标系,纵向是X轴,横向是Y轴...
  • 空间中的一个矩形,由8个三角形组成,三角形各个顶点不共面(即一个...如何把一张图片贴在这个矩形上呢?谢谢。 (补充:如果是一个平整的四边形,那就很容易了,用四个glTexCoord2f(i,j), glVertex3f(x,y,z)便可以)
  • OpenGL基础(四):四边形

    千次阅读 2018-06-24 17:12:19
    OPengl中四边形的绘制类型有:GL_QUADS,GL_QUAD_STRIP和GL_POLYGON。 GL_QUADS  依次定义四边形的各个顶点。 glPolygonMode(GL_FRONT, GL_LINE); glBegin(GL_QUADS); glVertex3f(10.0f, 100.0f, 0.0f); ...
  • 输出平行四边形的底和高,求平行四边形的面积 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int l,h; cin>>l>>h; cout<<l*h<<endl; return 0; }
  • 在平行四边形中显示JPEG图像 在平行四边形中显示JPEG图像 在平行四边形中显示JPEG图像 在平行四边形中显示JPEG图像
  • 四边形顶点寻找

    2018-04-23 10:30:03
    如图的东西的意思是,用相机拍了一张图片,里面的四边形就是所拍物体 , [color=#0000FF][b]问题[/b][/color] 寻找四边形的四个顶点,之前我使用的方法是寻找距离ABCD四个顶点最近的点作为各自的顶点,但是图形...
  • 打印平行四边形

    千次阅读 2018-04-30 00:02:30
    题目描述 给出图形的高度n,请打印如下图形。 n=5:   * * * * * * * * * * * * * * * * * * * * * * * * *   输入 每次测试有一个整数n(0&lt;n&lt;20)。 输出 ... *...
  • 如题,一幅图像上有一个简单的四边形,怎么计算出四个顶点的坐标? 主要是想计算出相邻两边的角度,以及相对两边的距离。 我的想法是先找出四个定点,然后再去算角度以及距离。
  • 使用ShapeDrawable、shape和canvas实现平行四边形的效果
  • 找到一个最大的轮廓(四边形

    千次阅读 2018-05-21 23:20:43
    图片中有很多四边形和数字,我想只找到一个最大的四边形(或较大的),并得到他的顶点,然后进行透视变换,将图片变正,这是今天的程序暂存,目前对于一些函数还是不是很熟悉,明天再说。(在 drawContours(drawing,...
  • 检测四边形轮廓以及角点 */ /*晚上调好模板匹配以及透视变换,再试试OCR库 */ #pragma warning(disable:4996) // #include &amp;lt;opencv.hpp&amp;gt; #include &amp;lt;opencv2/video.hpp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,568
精华内容 2,627
关键字:

一般四边形图片