1:代码如下:

  1. #include "stdafx.h"
  2. #include "cxcore.h"
  3. #include "cvcam.h"
  4. #include "windows.h"
  5. #include "cv.h"
  6. #include "highgui.h"
  7. #include "iostream"
  8. using namespace std;
  9. CvMat* RankPoint(CvMat* p);
  10. /*输出矩阵*/
  11. void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字
  12. {
  13. printf("%s:\n", name);
  14. for (int i=; i<target->rows; i++)
  15. {
  16. for (int j=; j<target->cols;j++)
  17. {
  18. printf("%f\t", cvmGet(target, i,j));
  19. }
  20. printf("\n");
  21. }
  22. }
  23. CvMat* RankPoint(CvMat* p)
  24. {
  25. CvMat* p_dst=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
  26. double a[][];
  27. a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,);
  28. a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,); a[][]=cvmGet(p,,);
  29. //cout<<a[0][2]<<endl;
  30. double b;
  31. for(int j=3;j>1;j--)
  32. {
  33. for(int i=;i<j;i++)
  34. {
  35. if(a[][i]>=a[][i+])
  36. {
  37. b=a[][i];
  38. a[][i]=a[][i+];
  39. a[][i+]=b;
  40.  
  41. b=a[][i];
  42. a[][i]=a[][i+];
  43. a[][i+]=b;
  44. }
  45. }
  46. }
  47.  
  48. for(int i=;i<;i=i+)
  49. {
  50. if(a[][i]>=a[][i+])
  51. {
  52. b=a[][i];
  53. a[][i]=a[][i+];
  54. a[][i+]=b;
  55.  
  56. b=a[][i];
  57. a[][i]=a[][i+];
  58. a[][i+]=b;
  59. }
  60. }
  61. cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]);
  62. cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]); cvmSet(p_dst,,,a[][]);
  63. cvmSet(p_dst,,,); cvmSet(p_dst,,,); cvmSet(p_dst,,,); cvmSet(p_dst,,,);
  64. return p_dst;
  65. /*------释放内存------*/
  66. cvReleaseMat(&p_dst);
  67. /*------------*/
  68. }
  69. int main()
  70. {
  71. CvMat* p_callback_circle=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
  72. cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
  73. cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
  74. cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,); cvmSet(p_callback_circle,,,);
  75. PrintMat2(p_callback_circle, "p_callback_circle");
  76. CvMat* p_dst_callback_circle=cvCreateMat(,,CV_32FC1);//图像上点的矩阵,竖着依次为u,v,1
  77. p_dst_callback_circle=RankPoint(p_callback_circle);
  78. PrintMat2(p_dst_callback_circle, "p_dst_callback_circle");
  79. return ;
  80. }

运行结果:

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. oa_mvc_easyui_后台布局(3)

    1.新建HomeController控制器,并创建视图,后台的主页 2.easyUI的引用: <link href="~/Content/default/easyui.css" ...

  2. Chrome开发者工具详解(一)之使用断点来调试代码上

    1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断 ...

  3. JS基础_标识符

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 机器学习-SVM-手写识别问题

    机器学习-SVM-手写识别问题 这里我们解决的还是之前用KNN曾经解决过的手写识别问题(https://www.cnblogs.com/jiading/p/11622019.html),但相比于KNN ...

  5. mybatis-generator的功能扩展

    项目代码地址:https://github.com/whaiming/java-generator 我在原有的基础上扩展了和修改了一些功能: 1.增加获取sqlServer数据库字段注释功能 2.Ma ...

  6. python-webdriver中添加cookie,解决添加了图片验证码的问题

    遇到问题:之前一直能用的脚本突然跑不通了,仔细一看原来是研发新加了图片验证码...... 解决问题: 手动抓取了cookie并塞进去,解决问题.当然如果你的cookie有效期太短或者是随着会话关闭就失 ...

  7. dedecms 调用所属栏目的二级栏目列表

    include\taglib\channel.lib.php 在 else if($type=='self') { if($reid==0) return ''; $sql = "SELEC ...

  8. QT 给工程添加图片

    先打开如图的打开方式 然后我们看到以下的画面,选择下面的 然后我们选择如下:,这里我们要注意我们的图片资源有一定要和QRC资源在同一个文件夹中 之后我们通过在stylesheet里面设置来使用我们添加 ...

  9. dumpe2fs Linux支持的文件系统

    dumpe2fs  (-bh)装置文件名 选项与参数: -b : 列出保留为坏轨的部分 -h : 仅列出superblock的数据,不会列出其他的区段内容 查看Linux支持的文件系统哪些支持: ls ...

  10. cmd中subst的使用

    SUBST [drive1: [drive2:]path] drive1:        指定要指派路径的虚拟驱动器.[drive2:]path  指定物理驱动器和要指派给虚拟驱动器的路径. 路径替换 ...