【原创】opencv 实现特定形状视频跟踪,图像裁剪

本文作者分享了如何使用OpenCV通过摄像头采集图像,应用cvCanny算子进行边缘检测,并通过cvFindContours查找轮廓,实现实时特定形状的视频跟踪。最终,程序能够依据预设参数裁剪选定的图像区域。
摘要由CSDN通过智能技术生成

【原创】 opencv 实现特定形状视频跟踪,图像裁剪

Author: chad
Mail: linczone@163.com

先看效果:
这里写图片描述

如上图所示,程序通过摄像头采集图像,然后使用cvCanny算子实现边缘检测,最后使用cvFindContours查找轮廓,进而根据预设参数寻找对应图像区域.并完成图像裁剪与选装.

程序如下:

/*
    2015-07-24 linczone@163.com
    编译命令如下:
    g++ `pkg-config opencv --cflags` main.c -o meter `pkg-config opencv --libs` 
*/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cv.h>
#include <highgui.h>
#include <cmath>
#include <opencv/highgui.h>
#include <stdio.h>

using namespace std;
//旋转,缩放
int WarpAffine(IplImage *src, double angle, double scale )
{
   CvPoint2D32f srcTri[3], dstTri[3];
   CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1);
   IplImage *dst;

   dst = cvCloneImage(src);
   dst->origin = src->origin;
   cvZero(dst);

   //COMPUTE ROTATION MATRIX
   CvPoint2D32f center = cvPoint2D32f(src->width/2,
                                         src->height/2);
   cv2DRotationMatrix(center,angle,scale,rot_mat);
   cvWarpAffine(src,dst,rot_mat);
   cvCopy(dst,src);

   cvReleaseImage(&dst);
   cvReleaseMat(&rot_mat);
   return 0;
}
//void callTrackbar( int position )
//{
   

//}
int main(int argc,char *argv[])
{
    char tmpbuf[100];

    CvCapture* capture ;

    cvNamedWindow("out");
    if( argc != 1 )
        capture = cvCreateFileCapture( argv[1] );   //从视频文件获取图像
    else 
        capture = cvCreateCameraCapture( 1 );       //从视频设备获取图像
    IplImage *frame;
    IplImage *out = NULL;
    I
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值