您的位置:首页 > 运维架构

opencv实现图片的裁剪以及旋转

2017-08-02 20:01 369 查看
opencv实现图片的裁剪以及旋转

实现的基础:vs2013,opencv3.5

第一部分:图片的裁剪

直接上源码,


#include "stdafx.h"

#include <highgui.h>  

#include <cxcore.h>  

#include "math.h"

#include <cv.h>  

#include "iostream"

using namespace std;

const char* filename1 = "C:\\Users\\Administrator\\Desktop\\hu\\English.tif";

int main(int argc, char** argv)

{    

    IplImage    *img;

    IplImage    *img1;

    img = cvLoadImage(filename1, CV_LOAD_IMAGE_COLOR);

    cvNamedWindow("img", CV_WINDOW_AUTOSIZE);

    cvShowImage("img", img);

    CvRect rectInImage;

    rectInImage = cvRect(0, 0, img->width, img->height*0.2);

    CvSize size;

    size.width = rectInImage.width;

    size.height = rectInImage.height;

    img1 = cvCreateImage(size, img->depth, img->nChannels);

    cvSetImageROI(img, rectInImage);//基于给定的矩形设置图像的ROI

    cvCopy(img, img1);

    cvNamedWindow("img1", CV_WINDOW_AUTOSIZE);

    cvShowImage("img1", img1);

    cvResetImageROI(img);

    cvWaitKey(0);

    return 0;

}

效果:



第2部分:图片的旋转

同样直接上源码:


#include <highgui.h>  

#include <cxcore.h>  

#include "math.h"

#include <cv.h>  

#include "iostream"

using namespace std;

const char* filename1 = "C:\\Users\\Administrator\\Desktop\\hu\\lenna.jpg";

int main(int argc, char** argv)

{

    IplImage    *img;

    IplImage    *img1;

    img = cvLoadImage(filename1, CV_LOAD_IMAGE_COLOR);

    cvNamedWindow("img", CV_WINDOW_AUTOSIZE);

    cvShowImage("img", img);

    CvSize size;

    size.width = img->width;

    size.height = img->height;

    img1 = cvCreateImage(size, img->depth, img->nChannels);

    //旋转中心为图像中心

    CvPoint2D32f center;

    center.x = float(img->width / 2.0 + 0.5);

    center.y = float(img->height / 2.0 + 0.5);

    //计算二维旋转的仿射变换矩阵  

    float m[6];

    CvMat M = cvMat(2, 3, CV_32F, m);

    cv2DRotationMatrix(center, 180, 1, &M);

    cvWarpAffine(img, img1, &M, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS, cvScalarAll(0));

    cvNamedWindow("img1", CV_WINDOW_AUTOSIZE);

    cvShowImage("img1", img1);

    cvWaitKey(0);

    return 0;

}

效果:



好了,刚见面就说再见,,(王者荣耀花木兰台词)

,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv 旋转 截图 vs2013