会造成像素丢失。
#include <opencv2/opencv.hpp>
#include <stdio.h>
using namespace cv;
int main(int argc, char **argv)
{
IplImage *img = cvLoadImage("lena.jpg");
CvSize img_size = cvGetSize(img);
IplImage *new_img = cvCreateImage(img_size,IPL_DEPTH_8U,3);//需要设置像素位深度IPL_DEPTH_8U为无符号8位整数,即256
CvScalar pixel;
//double transfer_matrix[][3]={ {0.5,0,0} , {0,0.5,0} , {0,0,1} };
for (int i = 0; i < img->height; ++i)
{
for (int j = 0; j < img->width; ++j)
{
pixel = cvGet2D(img, i, j);
printf("B=%f,G=%f,R=%f\t", pixel.val[0], pixel.val[1], pixel.val[2]);
int xx = (int)(0.5*i);
int yy = (int)(0.5*j);
cvSet2D(new_img, xx, yy, pixel);
}
}
cvNamedWindow("image", 1);
cvShowImage("image", new_img);
cvWaitKey(0);
cvDestroyWindow("image");
cvReleaseImage(&img);
cvReleaseImage(&new_img);
return 0;
}