OpenCV在图像上抠取指定区域平移、缩放的图像
来源:互联网 发布:linux android 模拟器 编辑:程序博客网 时间:2024/03/29 22:17
下面程序中的readtxt()函数实现在博客http://blog.csdn.net/susu_love/article/details/53218210
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <iostream>#include <fstream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/objdetect/objdetect.hpp>#include <opencv2/ml/ml.hpp>#include <string>using namespace std;using namespace cv;#define IMAGENUM 105#define OBJNUM 168struct FRAME{int framenum;int objnum;int startx;int starty;int width;int height;} frameInfo[IMAGENUM];Rect new_location(Rect rect, struct FRAME newframe, Mat src, int casenum){switch(casenum){case 0://原位置rect.x = newframe.startx;rect.y = newframe.starty;rect.width = newframe.width;rect.height = newframe.height;break;case 1://左移10%rect.x = newframe.startx - newframe.width*0.1;rect.y = newframe.starty;rect.width = newframe.width;rect.height = newframe.height;break;case 2://右移10%rect.x = newframe.startx + newframe.width*0.1;rect.y = newframe.starty;rect.width = newframe.width;rect.height = newframe.height;break;case 3://上移10%rect.x = newframe.startx;rect.y = newframe.starty - newframe.height*0.1;rect.width = newframe.width;rect.height = newframe.height;break;case 4://下移10%rect.x = newframe.startx;rect.y = newframe.starty + newframe.height*0.1;rect.width = newframe.width;rect.height = newframe.height;break;case 5://左上角rect.x = newframe.startx - newframe.width*0.05;rect.y = newframe.starty - newframe.height*0.05;rect.width = newframe.width;rect.height = newframe.height;break;case 6://左下角rect.x = newframe.startx - newframe.width*0.1;rect.y = newframe.starty + newframe.height*0.1;rect.width = newframe.width;rect.height = newframe.height;break;case 7://右上角rect.x = newframe.startx + newframe.width*0.1;rect.y = newframe.starty - newframe.height*0.1;rect.width = newframe.width;rect.height = newframe.height;break;case 8://右下角rect.x = newframe.startx + newframe.width*0.1;rect.y = newframe.starty + newframe.height*0.1;rect.width = newframe.width;rect.height = newframe.height;break;case 9://缩小rect.x = newframe.startx + newframe.width*0.05;rect.y = newframe.starty + newframe.height*0.05;rect.width = newframe.width*0.9;rect.height = newframe.height*0.9;break;case 10://放大rect.x = newframe.startx - newframe.width*0.05;rect.y = newframe.starty - newframe.height*0.05;rect.width = newframe.width*1.1;rect.height = newframe.height*1.1;break;default: break;}if(rect.x < 0)rect.x = 0;if(rect.y < 0)rect.y = 0;if(rect.x + rect.width > src.cols)rect.width = src.cols - rect.x;if(rect.y + rect.height > src.rows)rect.height = src.rows - rect.y;return rect;}int _tmain(int argc, _TCHAR* argv[]){int imageCount = 0;int needframe = 105; //可设置一共取多少帧int interval = IMAGENUM/needframe;int t = readtxt(interval);if (!t){cout<<"读取真实值完成"<<endl;}string srcImg;char saveName[256];ifstream fin("ThreeVideoList.txt");int temp = 0;for(int num=-1; num<IMAGENUM;){Mat src;if ((num-frameInfo[temp].framenum)){num++;getline(fin,srcImg);cout<<"处理:"<<srcImg<<endl;srcImg = "E:\\数据集\\图像帧\\ThreeVideoSelected\\" + srcImg;}src = imread(srcImg);resize(src,src,Size(1280,720));if (!(num-frameInfo[temp].framenum)){for (int casenum=0;casenum<11;casenum++) //通过casenum可以控制所抠取的图像是经过了何种变换{Rect rect;rect = new_location(rect,frameInfo[temp],src,casenum);Mat image = src(rect);sprintf(saveName,"E:\\数据集\\目标区域图像\\目标区域变换\\ThreeVideo\\%03d.jpg",imageCount++);imwrite(saveName,image);}temp++;}}return 0;}
0 0
- OpenCV在图像上抠取指定区域平移、缩放的图像
- 图像的平移,缩放..
- 图像的平移和缩放
- OpenCV编程->图像的平移
- matlab实现图像的平移、旋转、缩放
- matlab实现图像的平移、旋转、缩放
- Matlab 实现图像的平移,旋转,缩放
- chapter14_1图像的缩放与平移
- opencv把一个图像的一小块区域拷贝到另一个图像的指定区域
- opencv-把一个图像的一小块区域拷贝到另一个图像的指定区域
- opencv实现图像平移
- 图像平移缩放旋转匹配
- 图像平移缩放旋转匹配
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- OpenCV编程->二维图像的平移warpAffine
- opencv缩放图像的实现
- OpenCV--图像的缩放-resize()
- SQL 优化
- Delphi写dll文件
- [LeetCode]Convert Sorted Array to Binary Search Tree
- 中心椭圆算法画图C++
- error TRK0005: Failed to locate: "CL.exe".
- OpenCV在图像上抠取指定区域平移、缩放的图像
- c++循环控制语句
- Oracle sqlplus中常用的set命令
- jstack jstat jmap
- 《合成孔径雷达成像——算法与实现》之【6】仿真图3.6加窗
- 扩展欧几里德算法模版题 POJ 1061青蛙的约会
- zookeeper 集群配置
- 菜鸟个人总结之纯sql导入数据(oracle,pl/sql)
- tomcat启动时检测到循环继承而栈溢出的问题