openCV实现图像归一化
来源:互联网 发布:unity编程语言 编辑:程序博客网 时间:2024/05/17 08:14
今天下午师弟问了一个关于图像归一化的问题,因此小编写了关于图像归一化的代码,比如一个文件夹下有多幅图像,每幅图像的大小不一致,如果想把这些图像归一化为相同大小的图像,就涉及到归一化的问题,现分享代码如下:
#include <opencv2/opencv.hpp>#include "highgui.h"#include <iostream>using namespace std;using namespace cv;int main(){ IplImage *src; src = cvLoadImage("100000.jpg"); cvShowImage("100000",src); //cvReleaseImage(&src); IplImage* gray_image; gray_image = cvCreateImage(cvGetSize(src),8,1); cvCvtColor(src,gray_image,CV_BGR2GRAY); //cvShowImage("GrayImage",gray_image); IplImage* norm_image; CvSize norm_cvsize; norm_cvsize.width = 480; //目标图像的宽 norm_cvsize.height = 640; //目标图像的高 cout<<"开始归一化"<<endl; norm_image = cvCreateImage(norm_cvsize, gray_image->depth,gray_image->nChannels);//构造目标图象 cvResize(gray_image, norm_image, CV_INTER_LINEAR); //缩放源图像到目标图像 cout<<"归一化完成"<<endl; cvShowImage("归一化图像",norm_image); cvWaitKey(0); cvSaveImage("norm.jpg", norm_image); //保存归一化图像到本地文件夹下 cvReleaseImage(&norm_image);}
上面的代码实现了将一幅768*1024的图像转化为480*640的图像,并将处理后的图像保存在文件夹下,如果想将多幅图像大小不一致的图像归一化为相同大小的图像,只需要加一个for循环,在此小编只实现了一幅图像的处理。下面给出原图像和和代码运行后得到的处理后的图像:
至此,实现了一幅图像大小的更改。如果将一个文件夹下的多幅图像进行归一化为相同大小的图像,只需要在上面的代码中加上一个for循环即可,代码如下:
#include <opencv2/opencv.hpp>#include "highgui.h"#include <iostream>#include<fstream>using namespace std;using namespace cv;int nImages=1491;void main(){//加载图像名到数组中char **img_name_index = new char *[nImages]; // load image names of Ukbenchifstream inf_img ("..\\data\\img_name.txt", ios_base::in);if(!inf_img) return;for (int n = 0; n < nImages; n++){ img_name_index[n] = new char[100]; if (!img_name_index[n]) break; inf_img.getline(img_name_index[n], 32);}inf_img.close();for(int i=0;i<nImages;i++){ cout<<i+1<<endl; char temp[100]="\0"; char result_img[100]="\0"; sprintf(temp,"..\\images\\%s",img_name_index[i]); IplImage *src; src = cvLoadImage(temp); IplImage* gray_image; gray_image = cvCreateImage(cvGetSize(src),8,1); cvCvtColor(src,gray_image,CV_BGR2GRAY); IplImage* norm_image; CvSize norm_cvsize; norm_cvsize.width = 480; //目标图像的宽 norm_cvsize.height = 640; //目标图像的高 norm_image = cvCreateImage(norm_cvsize, gray_image->depth,gray_image->nChannels); //构造目标图象 cvResize(gray_image, norm_image, CV_INTER_LINEAR); //缩放源图像到目标图像 sprintf(result_img,"..\\new_image\\%d.jpg",i+1); cvSaveImage(result_img, norm_image);//cvSaveImage("norm.jpg", norm_image); //保存归一化图像到本地文件夹下 cvReleaseImage(&norm_image); cvReleaseImage(&src); cvReleaseImage(&gray_image);}}
阅读全文
1 0
- openCV实现图像归一化
- opencv图像归一化大小
- OpenCV实现对图像的光照归一化处理
- OpenCV实现对图像的光照归一化处理
- MATLAB实现图像灰度归一化
- OpenCV 透视变换【图像归一化矫正】
- OpenCV对图像的光照归一化处理
- 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
- OpenCV学习笔记(1)——resize函数实现图像大小归一化
- theano 实现图像局部对比度归一化
- 归一化图像
- 图像归一化
- 图像归一化
- 图像归一化
- 图像归一化
- opencv读入图像、灰度化、归一化、向量化
- opencv实现图像旋转
- opencv实现图像旋转
- C++11类型别名
- Scala CheatSheet
- Access denied for user \'root\'@\'localhost\'” 解决办法
- java并发学习笔记
- circshift 函数详解
- openCV实现图像归一化
- Python练习题 9-7~9-8管理员问题
- 从TFS获取指定日期后的最新版本文件
- linux安装nginx
- 平凡的世界——杜梨树下的约定
- unity transform的position和localPosition属性的区别
- 17 容器深入研究
- 【涨姿势】关闭子窗口的同时刷新父窗口
- 【TCP/IP】(一)、网络基础知识