利用opencv剪切图片

原创 2018年04月17日 17:24:27

最近在做目标识别分类相关工作,有的数据集使用了BBox标注,而给的图片是原图,就需要将数据集中的图片根据BBox的标注重新剪切,生成新的数据集,下面是利用opencv来剪切图片的代码:

#include <opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
//分割字符串
void SplitString(const string& s, vector<string>& v, const string& c)
{
    string::size_type pos1, pos2;
    pos2 = s.find(c);
    pos1 = 0;
    while (string::npos != pos2)
    {
        v.push_back(s.substr(pos1, pos2 - pos1));

        pos1 = pos2 + c.size();
        pos2 = s.find(c, pos1);
    }
    if (pos1 != s.length())
        v.push_back(s.substr(pos1));
}
//切割,保存图片
void cut(string path,string path_out,int x,int y,int wigh,int high) {
    Mat img = imread(path, 1);
    Mat imgout = img(Rect(x, y, wigh, high));
    imwrite(path_out,imgout);
//  imshow("imgout", imgout);
}
int main(int argc, char* argv[])
{

    ifstream fin("F://dateset//Stanford car dataset//demo.txt");//demo.txt里面保存的是图片名称,BBox的四个坐标
    string s;
    string path;
    string path_out;
    int x1;
    int y1;
    int x2;
    int y2;
    while (getline(fin, s))
    {
        vector<string> v;
        SplitString(s, v, ","); 
        for (vector<string>::size_type i = 0; i != v.size(); ++i) {
            path = "F://dateset//Stanford car dataset//" + (string)v[0];
            path_out = "F://dateset//Stanford car dataset//car//"+ (string)v[0];
            x1 = atoi(v[1].c_str());
            y1 = atoi(v[2].c_str());
            x2 = atoi(v[3].c_str());
            y2 = atoi(v[4].c_str());
        }
        cout << path_out << endl;
        cut(path,path_out, x1, y1, x2 - x1, y2 - y1);
    //  Mat img = imread(path, 1);
    //  imshow("img",img);
    //  imwrite(path_out, img);
    //  waitKey(0);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leng0yan/article/details/79977878

OpenCV

-
  • 1970年01月01日 08:00

用OpenCV实现Photoshop算法(二): 图像剪切

二、图像剪切 用OpenCV 写一个图像剪切函数 imageCrop() 如下: //图像剪切 //参数:src为源图像, dst为结果图像, rect为剪切区域 //返回值:返回0表示成功,否则返...
  • c80486
  • c80486
  • 2016-09-11 02:26:34
  • 3379

opencv、python批量剪切图片

做图像处理需要大批量的修改图片尺寸来做训练样本,为此本程序借助opencv来实现大批量的剪切图片。 import cv2 import os def cutimage(dir,suffix): f...
  • EDS95
  • EDS95
  • 2017-03-30 16:29:40
  • 5210

OpenCV图像ROI裁剪

  • 2016年03月02日 10:43
  • 11.63MB
  • 下载

上传头像和剪切图片

  • 2016年05月18日 16:33
  • 991KB
  • 下载

java和javascript动态剪贴图片

  • 2008年04月25日 22:07
  • 1.47MB
  • 下载

openCV学习笔记(9)-- 图像剪切

图像的剪切有多种方法,其中一种是使用ROI的方法 第一步:将需要剪切的图像图像不部分设置为ROIcvSetImageROI(src , cvRect(x,y,width,height)); 第二步:新...
  • superjimmy
  • superjimmy
  • 2011-03-01 19:11:00
  • 26209

利用pencv的人脸检测

  • 2010年05月13日 08:49
  • 4.45MB
  • 下载

基于OpenCV的全景图剪切程序

去年实习的时候,接到一个任务将公司软件生成的一张全景图扭曲切割成六个正常的面,然后动态生成一个3D网页。忙活了2天后完成代码。但最终因为某些原因未被采用。 首先配置OpenCV。 找寻了众多资料,...
  • qq_30832659
  • qq_30832659
  • 2016-09-10 14:01:47
  • 524

opencv截取图像中某一区域的方法

Mat图像存储:Mat image= imread(image); Rect rect(10, 20, 100, 50); Mat image_roi = image(rect);IplImage*图...
  • sjtuxx_lee
  • sjtuxx_lee
  • 2017-08-12 15:43:01
  • 4286
收藏助手
不良信息举报
您举报文章:利用opencv剪切图片
举报原因:
原因补充:

(最多只允许输入30个字)