OpenCV学习之由点集序列或者数组创建凸外形
来源:互联网 发布:淘宝定制服装 编辑:程序博客网 时间:2024/06/07 17:14
由点集序列或者数组创建凸外形
#include "cv.h"#include "highgui.h" #define ARRAY 0 int main(){ IplImage* img = cvCreateImage(cvSize(500, 500), 8, 3); cvNamedWindow("hull", 1);#if ! ARRAY CvMemStorage* storage = cvCreateMemStorage(0);#endif int i; int contour = rand() % 100 + 1; int hullcontour; CvPoint pt0;#if ! ARRAY CvSeq* ptseq = cvCreateSeq(CV_SEQ_KIND_GENERIC | CV_32SC2, sizeof(CvContour), sizeof(CvPoint), storage); CvSeq* hull; for (i = 0; i < contour; i++) { pt0.x = rand() % (img->width / 2) + img->width / 4; pt0.y = rand() % (img->height / 2) + img->height / 4; cvSeqPush(ptseq, &pt0); } hull = cvConvexHull2(ptseq, 0, CV_CLOCKWISE, 0); /*hull = cvConvexHull2 (ptseq, 0, CV_CLOCKWISE, 1);*/ hullcontour = hull->total;#else CvPoint* points = (CvPoint*)malloc(contour * sizeof(points[0])); int* hull = (int*)malloc(contour * sizeof(hull[0])); CvMat point_mat = cvMat(1, contour, CV_32SC2, points); CvMat hull_mat = cvMat(1, contour, CV_32SC1, hull); for (i = 0; i < contour; i++) { pt0.x = rand() % (img->width / 2) + img->width / 4; pt0.y = rand() % (img->height / 2) + img->height / 4; points[i] = pt0; } cvConvexHull2(&point_mat, &hull_mat, CV_CLOCKWISE, 0); hullcontour = hull_mat.cols;#endif cvZero(img); for (i = 0; i < contour; i++) {#if ! ARRAY pt0 = *CV_GET_SEQ_ELEM(CvPoint, ptseq, i); /*pt0 = ** CV_GET_SEQ_ELEM(CvPoint*, ptseq, i);*/#else pt0 = points[i];#endif cvCircle(img, pt0, 2, CV_RGB(255, 0, 0), CV_FILLED); }#if ! ARRAY pt0 = ** CV_GET_SEQ_ELEM(CvPoint*, hull, hullcontour - 1); /*pt0 = * CV_GET_SEQ_ELEM(CvPoint, hull, hullcontour - 1);*/#else pt0 = points[hull[hullcontour - 1]];#endif for (i = 0; i < hullcontour; i++) {#if ! ARRAY CvPoint pt = **CV_GET_SEQ_ELEM(CvPoint*, hull, i); /*CvPoint pt = *CV_GET_SEQ_ELEM(CvPoint, hull, i);*/#else CvPoint pt = points[hull[i]];#endif cvLine(img, pt0, pt, CV_RGB(255, 0, 0)); pt0 = pt; } cvShowImage("hull", img); cvWaitKey(0);#if ! ARRAY cvClearMemStorage(storage);#else free(points); free(hull);#endif return 0;}
阅读全文
0 0
- OpenCV学习之由点集序列或者数组创建凸外形
- OpenCV函数cvConvexHull2由点集序列或数组创建凸边形
- 由点集序列或数组创建凸边形
- opencv学习笔记:由三对点计算仿射变换
- 学习 shell —— 创建序列数组
- opencv 学习之检测角点
- opencv学习之角点检测
- Opencv学习之角点检测
- OpenCV学习之角点检测
- kamkam之外形
- Mahout学习之命令行创建序列文件
- 【Ubuntu+OpenCV】OpenCV之矩阵创建、初始化--学习笔记【4】
- Geometry 1 由点创建线段
- 由点云创建深度图
- OpenCV 2 学习之”鼠标描点画图“
- opencv学习(四十四)之图像角点检测Harris
- opencv学习之Shi-Tomasi角点检测
- opencv学习之亚像素角点检测
- 百练2765八进制小数题解
- LeetCode Graph:M210. Course Schedule II
- 第3节 毛中特(一)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 计算机网络面试题
- OpenCV学习之由点集序列或者数组创建凸外形
- C++编译期多态与运行期多态
- 带解题思路:Coursera Machine Learning 第六周 quiz (Machine Learning System Design)
- 马儿走了,传送一篇《终究有梦吧!内马尔有野心,为梦想离开》
- 如何添加动画事件
- 获取用户真实ip,过滤多级反向代理
- MFC中使用OpenCV显示摄像头图像并二值化
- spring模块有那几个部分
- Delaunay三角形和Voronoi划分的迭代式构造