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.两幅图像的大小和类型必须一致,或者第二个图像可以是 ...
随机推荐
- 使用mybatis插件自动生成代码以及问题处理
1.pom.xml中加入依赖插件 <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis ...
- Jquery 控制table中的checkbox 相关选中事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java实现spark常用算子之distinct
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- 键盘事件 Ctrl+p 模拟(vue)
方法定义 // 打印页面 printpage(myDiv) { // myDiv 为打印对象的id名 var newstr = document.getElementById(myDiv).inner ...
- X-Forwarded-For伪造及防御
使用x-Forward_for插件或者burpsuit可以改包,伪造任意的IP地址,使一些管理员后台绕过对IP地址限制的访问. 防护策略: 1.对于直接使用的 Web 应用,必须使用从TCP连接中得到 ...
- 关于IDEA,多服务运行 Services -> Run Dashboard 部分服务添加变灰色,限制使用5个启动类,重启之后需要重新添加,服务在 Run Dashboard 中的显示排序问题,不显示 Services(Run Dashboard)
我的IDEA版本为最新版本 变灰色的原因就是因为右键删除了那个启动的主配置类,然后就会显示灰色,再次打开这个醒目,就不会在Run Dashboard中显示这个主配置类了 解决方法 如果你要 调整这些服 ...
- mysql truncate 与 delete的相同点和不同点
相同点 都可以清空表,自增字段将起始值恢复成1 [delete from table_name where 1 可以保持自增的最大值] delete from table_name; truncate ...
- Delphi CheckBox组件
- deep_learning_Function_tf.identity()
这两天看batch normalization的代码时,学到滑动平均窗口函数ExponentialMovingAverage时,碰到一个函数tf.identity()函数,特此记录. tf.ident ...
- 19.8.8 flutter 学习之创建第一个可变的Widget
创建一个很简单的可变的Widget 效果就是点击字的时候会变化 完整代码: class CarPage extends StatefulWidget { @override _CarState cre ...