opencv批量切割图片

在获取负样本时就算用Ps进行切片也比较麻烦,上了几千就麻烦的要死,好吧,网上找合适的程序好麻烦,自己动手写了个小程序。由于不熟悉,参考别人的代码,直接上

这里写代码片
#include<iostream>
#include<opencv/cv.h>
#include<opencv/highgui.h>

using namespace std;
using namespace cv;

char filename[150];
char windowname[150];
char negname[100];
char ImageName[100];
Mat p;
//IplImage *p;
IplROI *pp;
Mat roi;
int c = 1;
unsigned char  *Readfigsmethod1(int num)
{
    for (int m = 1; m < num; m++)
    {
        sprintf(filename, "F:/vs/ImageDivision/ImageDivision/%d.jpg", m);
        sprintf(windowname, "window%d.jpg", m);
        //p = cvLoadImage(filename, 1);
        p = cvLoadImage(filename, 1);
        cvNamedWindow(windowname, CV_WINDOW_AUTOSIZE);
        //cvShowImage(windowname, q);//显示图片
        imshow(windowname, p);
        //cvWaitKey();

        int i = 0, j = 0;
        int width = 20, height = 24;
        for (i; i != p.cols; i = i + width)
        {
            for (j; j != p.rows; j = j + height)
            {
                roi = p(Rect(i, j, width, height));
                sprintf(ImageName, "F:/vs/readSequenceImage/readSequenceImage/image/neg%d%s", c, ".bmp");
                c++;
                //cvSaveImage(ImageName, roi);
                imwrite(ImageName, roi);
                //j=j*iC;
            }
            //i = i*iR;
            j = 0;
        }


    }

    return 0;
}
int main()
{

    //Mat p = imread("");
    Readfigsmethod1(4);
    cvWaitKey();

    cvDestroyAllWindows();
    system("pause");
    return 0;
}

不熟悉啊。。知道mat用rect可以分割图片了,如果是用IplImage开辟空间的话p->下有个roi可是弄了好久弄不成…回头再看吧…
今天在写代码时的一点体会:
1.在读入多张图片时,char一个变量用来表示文件的名字,之前不明白为什么短短的名字为毛不直接给10个字节就够了,断点跑后发现路径也占了空间,如果直接char p[10]会导致连路劲都放不完,读取图片失败,即一片灰。
2.还有一片灰的一种情况是imshow(windowname, p);时windowname写成了“window%d.jpg”,好离奇的错误…看了好一会才看出来。。。
3.在写将图片切片时粗心没算好横纵坐标比例,导致内存溢出,重新计算就好了。
4.在正样本50,负样本3232,前两层很快就出来了,第三层用了十多秒,第四城又在那卡着,等结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值