1:代码如下:

#include "stdafx.h"
#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"
#include "iostream"
using namespace std;
CvMat* RankPoint(CvMat* p);
/*输出矩阵*/
void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字
{
printf("%s:\n", name);
for (int i=; i<target->rows; i++)
{
for (int j=; j<target->cols;j++)
{
printf("%f\t", cvmGet(target, i,j));
}
printf("\n");
}
}
CvMat* RankPoint(CvMat* p)
{
CvMat* p_dst=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
double a[][];
a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,);
a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,);
//cout<<a[0][2]<<endl;
double b;
for(int j=3;j>1;j--)
{
for(int i=;i<j;i++)
{
if(a[][i]>=a[][i+])
{
b=a[][i];
a[][i]=a[][i+];
a[][i+]=b; b=a[][i];
a[][i]=a[][i+];
a[][i+]=b;
}
}
} for(int i=;i<;i=i+)
{
if(a[][i]>=a[][i+])
{
b=a[][i];
a[][i]=a[][i+];
a[][i+]=b; b=a[][i];
a[][i]=a[][i+];
a[][i+]=b;
}
}
cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]);
cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]);
cvmSet(p_dst,,,); cvmSet(p_dst,,,); cvmSet(p_dst,,,); cvmSet(p_dst,,,);
return p_dst;
/*------释放内存------*/
cvReleaseMat(&p_dst);
/*------------*/
}
int main()
{
CvMat* p_callback_circle=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
PrintMat2(p_callback_circle, "p_callback_circle");
CvMat* p_dst_callback_circle=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
p_dst_callback_circle=RankPoint(p_callback_circle);
PrintMat2(p_dst_callback_circle, "p_dst_callback_circle");
return ;
}

运行结果:

opencv_将图像上的4个点按逆时针排序的更多相关文章

  1. OpenCV之响应鼠标(四):在图像上绘制出矩形并标出起点的坐标

    涉及到两方面的内容:1. 用鼠标画出矩形.2.在图像上绘制出点的坐标 用鼠标绘制矩形,涉及到鼠标的操作,opencv中有鼠标事件的介绍.需要用到两个函数:回调函数CvMouseCallback和注册回 ...

  2. c# PictureBox 的图像上使用鼠标画矩形框

    C# 中在图像上画框,通过鼠标来实现主要有四个消息响应函数MouseDown, MouseMove, MouseUp, Paint重绘函数实现.当鼠标键按下时开始画框,鼠标键抬起时画框结束. Poin ...

  3. 在DirectShow的视频图像上叠加线条和文字

    在DirectShow的视频图像上叠加线条和文字 最近一直在从事工业测量方面的开发工作,难免会用到各种各样的相机,其中支持DX的USB相机开发起来比较方便,由于工作需要经常要在视频图像上叠加线条和文字 ...

  4. LindDotNetCore~docker里图像上生成中文乱码问题

    回到目录 因为docker上的大部分镜像都是基于linux系统的,所以在向图像中写中文时需要考虑中文字体问题,例如在microsoft/aspnetcore2.0这个镜像,它是基于debian系统的, ...

  5. 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)

    1. cv2.matchTemplate(src, template, method)  # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...

  6. [图像]用Matlab在图像上画矩形框

    原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/46819527 在毕业设计的时候写论文画图 ...

  7. 在YUV图像上根据背景色实现OSD反色

    所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...

  8. 图像上划矩形(cv.line()函数)

    在图像上划矩形 import numpy as npimport cv2 as cvimg=np.zeros((400,400),np.uint8)cv.line(img,(100,100),(350 ...

  9. OpenCV学习笔记(4)——图像上的算术运算

    学习图像上的算术运算,加法,减法,位运算等 1.图像加法 使用cv2.add()将两幅图像进行加法运算,也可以用numpy运算,直接img+img1.两幅图像的大小和类型必须一致,或者第二个图像可以是 ...

随机推荐

  1. VS Code 配置碰到的问题

    VS Code 呈现缩进参考线以及语法高亮改变 找到 首选项——>设置→搜索renderIntentGuides→将此选项改为true(默认为false),就可以了.

  2. 第一个SpringMVC应用流程总结

  3. SpringDataJpa实体类常用注解

    最近公司在使用SpringDataJpa时,需要创建实体类,通过实体类来创建数据库表结构,生成数据库表. 下面我们就来看下在创建实体类时一些常用的注解吧!!! 1.实体类常用注解 @Entity 标识 ...

  4. 一个页面多图表展示(四个div的方式)

    效果如图所示,一个页面四个div,每个div里面展示相应的数据,因为这种效果会有点麻烦,而且不太雅观我就换了一种写法,一个div里面用四个图表,共用一个图例,先放上这个方式的效果图和源码,后期会再发布 ...

  5. Visual Studio解决方案的目录结构设置和管理

    摘至:http://blog.csdn.net/lp310018931/article/details/47991759 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件 ...

  6. 关于ASP.NET中fileupload控件的缺点

    一.首我来理一理“FileUpload”控件的工作大概原理: FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本 ...

  7. 转载:Cesium的Property机制总结

    转自:https://www.jianshu.com/p/f0b47997224c 前言 Cesium官方教程中有一篇叫<空间数据可视化>(Visualizing Spatial Data ...

  8. C# 过滤字典中的数据 并将过滤后的数据转成新的字典对象

    Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("); dic. ...

  9. 26、Nginx Uwsgi代理

    1.Uwsgi代理基本概述 cgi.fastcgi.wsgi.uwsgi python框架 Django是一个开放源代码的web的框架 Flask是一个使用python编写的轻量级web应用框架 2 ...

  10. 2019-2020-1 20199319《Linux内核原理与分析》第五周作业

    系统调用的三层机制(上) 基础知识 1.通过库函数的方式进行系统调用,库函数用来把系统调用给封装起来. 2.CPU有四种不同的执行级别:0.1.2.3,数字越小,特权越高.Linux操作系统中采用了0 ...