【深度学习】针对ImageNet---AlexNet所写的图像预处理程序(3264*2448)

来源:互联网 发布:淘宝上哪家西服定做好 编辑:程序博客网 时间:2024/05/17 10:25
/********************************************************************************************************************文件功能:*     1--针对AlexNet模型,进行的图片处理程序,将图片处理成256*256的大小*     2--用于更改图片的图片名,后缀图片格式,图片的大小*     3--图片原来的规格有两种:*                             1---2448*3264*                             2---3264*2448*处理过程:*     2448*3264------2048*2048(setROI)------>1024*1024(cvPyrDown)--->512*512----->256*256开发环境:*      win10+vs2013+OpenCv2.4.8*时间地点:*      陕西师范大学 2016.11.9********************************************************************************************************************/#include<stdio.h>#include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/core/core_c.h>#include<opencv2/imgproc/imgproc_c.h>using namespace std;using namespace cv;int main(){char strFilename[100];                           //【1】定义一个字符数组保存----图片的存储路径char strWindowname[100];                         //【2】定义一个字符数组保存----用于动态更新窗口的窗口名char strFilenameAft[100];                        //【3】定义一个字符数组保存----用于给处理之后的图片动态的命名char strFilenameLast[100];int  j = 1;for (int i = 1; i <= 211; i++){                                                //【4】将图片的路径名动态的写入到strFilename这个地址的内存空间sprintf_s(strFilename,    "F:\\crack_classify_img\\crack_3_45_256\\1 (%d).jpg", i);sprintf_s(strFilenameAft, "F:\\crack_classify_img\\aft_crack_3_45_256\\noc%d.jpeg", j);sprintf_s(strWindowname, "srcImg%d", j);//===========================================================================================//【模块1】将图片读入内存,并显示//===========================================================================================IplImage* pImg = cvLoadImage(strFilename);          //【1】从指定的路径,将图片加载到内存中//cvNamedWindow(strWindowname, CV_WINDOW_AUTOSIZE); //【2】创建一个显示图片的窗口//cvMoveWindow (strWindowname,0,0);                 //【3】将显示窗口固定在(200,200)这个位置显示都进来的图片//cvShowImage  (strWindowname, pImg);               //【4】显示图片//cvWaitKey(0);//============================================================================================//【模块2】设置ROI区域裁剪图片----利用ROI区域将图片裁剪为:2048*2048//============================================================================================if ((pImg->width == 2448) && (pImg->height == 3264)){cvSetImageROI(pImg, cvRect(200, 608, 2048, 2048));//【1】设置一个2048*2048的ROI区域}else{cvSetImageROI(pImg, cvRect(608, 200, 2048, 2048));//【1】设置一个2048*2048的ROI区域}cvSaveImage(strFilenameAft,pImg);IplImage* pImgCopy = cvLoadImage(strFilenameAft);//===========================================================================================//【模块3】高斯金字塔下采样//         1----将图片size调节到256*256,并显示//         2----2048*2048:经过连续三次下采样,变为256*256//============================================================================================IplImage* pPyrDownImg = cvCreateImage (cvSize(pImgCopy->width / 2, pImgCopy->height / 2), pImgCopy->depth, pImgCopy->nChannels);IplImage* pPyrDownImg1 = cvCreateImage(cvSize(pPyrDownImg->width / 2, pPyrDownImg->height / 2), pPyrDownImg->depth, pPyrDownImg->nChannels);IplImage* pPyrDownImg2 = cvCreateImage(cvSize(pPyrDownImg1->width/ 2, pPyrDownImg1->height/ 2), pPyrDownImg1->depth, pPyrDownImg1->nChannels);cvPyrDown(pImg,         pPyrDownImg,  CV_GAUSSIAN_5x5);//【1】2048*2048--->1024*1024cvPyrDown(pPyrDownImg,  pPyrDownImg1, CV_GAUSSIAN_5x5);//【2】1024*1024--->512*512cvPyrDown(pPyrDownImg1, pPyrDownImg2, CV_GAUSSIAN_5x5);//【3】512*512----->256*256//cvNamedWindow("【PyrDown】", CV_WINDOW_AUTOSIZE);//cvMoveWindow ("【PyrDown】", 0, 0);//cvShowImage  ("【PyrDown】", pPyrDownImg2);cvSaveImage(strFilenameAft, pPyrDownImg2);            //【2】将修改图片size之后的图片保存在指定的文件夹下++j;cv::waitKey(1);//============================================================================================//【模块4】释放内存空间//============================================================================================cvReleaseImage(&pImg);                                 //【1】释放掉存储图片的内存cvReleaseImage(&pImgCopy);cvReleaseImage(&pPyrDownImg);cvReleaseImage(&pPyrDownImg1);cvReleaseImage(&pPyrDownImg2);cvDestroyWindow(strWindowname);                        //【2】销毁窗口的内存//cvDestroyWindow("【PyrDown】");}return 0;}

0 0