opencv_将图像上的4个点按逆时针排序
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个点按逆时针排序的更多相关文章
- OpenCV之响应鼠标(四):在图像上绘制出矩形并标出起点的坐标
涉及到两方面的内容:1. 用鼠标画出矩形.2.在图像上绘制出点的坐标 用鼠标绘制矩形,涉及到鼠标的操作,opencv中有鼠标事件的介绍.需要用到两个函数:回调函数CvMouseCallback和注册回 ...
- c# PictureBox 的图像上使用鼠标画矩形框
C# 中在图像上画框,通过鼠标来实现主要有四个消息响应函数MouseDown, MouseMove, MouseUp, Paint重绘函数实现.当鼠标键按下时开始画框,鼠标键抬起时画框结束. Poin ...
- 在DirectShow的视频图像上叠加线条和文字
在DirectShow的视频图像上叠加线条和文字 最近一直在从事工业测量方面的开发工作,难免会用到各种各样的相机,其中支持DX的USB相机开发起来比较方便,由于工作需要经常要在视频图像上叠加线条和文字 ...
- LindDotNetCore~docker里图像上生成中文乱码问题
回到目录 因为docker上的大部分镜像都是基于linux系统的,所以在向图像中写中文时需要考虑中文字体问题,例如在microsoft/aspnetcore2.0这个镜像,它是基于debian系统的, ...
- 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)
1. cv2.matchTemplate(src, template, method) # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...
- [图像]用Matlab在图像上画矩形框
原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/46819527 在毕业设计的时候写论文画图 ...
- 在YUV图像上根据背景色实现OSD反色
所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...
- 图像上划矩形(cv.line()函数)
在图像上划矩形 import numpy as npimport cv2 as cvimg=np.zeros((400,400),np.uint8)cv.line(img,(100,100),(350 ...
- OpenCV学习笔记(4)——图像上的算术运算
学习图像上的算术运算,加法,减法,位运算等 1.图像加法 使用cv2.add()将两幅图像进行加法运算,也可以用numpy运算,直接img+img1.两幅图像的大小和类型必须一致,或者第二个图像可以是 ...
随机推荐
- Dubbo消费方服务调用过程源码分析
参考:dubbo消费方服务调用过程源码分析dubbo基于spring的构建分析Dubbo概述--调用过程dubbo 请求调用过程分析dubbo集群容错机制代码分析1dubbo集群容错策略的代码分析2d ...
- c# 不让窗体显示在alt tab中
protected override CreateParams CreateParams { get { const int WS_EX_APPWINDOW = 0x40000; const int ...
- Git复习(十)之常见报错和疑问
报错 情况一:git pull报错 There is no tracking information for the current branch. Please specify which bran ...
- node-images Windows 64-bit with Unsupported runtime 错误解决办法 及 node 历史版本下载
在做项目的时候下载的最新的10.16[2019.6.12]版本,出现了模块不兼容的问题[node-images]. 在git上发现了相同问题 https://github.com/zhangyuanw ...
- 简单了解journalctl
journalctl 命令 journalctl是什么以及作用? journalctl 用来查询 systemd-journald 服务收集到的日志.systemd-journald 服务是 syst ...
- 转换byte(十进制)为图形(大小写字母,符号)
/** * 转换byte(十进制)为字母 */ public static String ByteToLetter (byte[] chars) { String Letter = "&qu ...
- performance面板使用,以及解决动画卡顿
https://googlechrome.github.io/devtools-samples/jank// 官方案例 https://juejin.im/post/5b65105f518825 ...
- LVS DR模型RS端修改配置脚本
#!/bin/bash vip=x.x.x.x in start) > /proc/sys/net/ipv4/conf/all/arp_ignore > /proc/sys/net/ipv ...
- 微信小程序刮刮乐
<view class="scratch_body"> <image class="scratch_body_bg" mode="w ...
- CenOS7秘钥双向验证的配置
配置密钥对的双向配置 HOST1配置: root下编辑/etc/ssh/sshd_config RSAAuthentication yes //启用RSA算法 Pubke ...