1、图像平移:
指的是把原图像初始的坐标(0,0)增加(dx;dy)像素,变成新的图像(初始坐标为(dx;dy))。也就是将原先图像的横坐标和纵坐标分别加上一个数字,变成一个新的坐标,然后将原图中原坐标位置的RGB赋值给新图中新坐标。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image;
image = imread("t2.jpg", CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
cout << "图片无法显示!" << endl;
return -1;
}
//namedWindow("初始图像", CV_WINDOW_AUTOSIZE);
imshow("初始", image);
int x = 50, y = 40;
Mat image_(image.rows + x, image.cols + y, CV_8UC3);
for (int i = 0; i < image.rows; i++)
{
for (int j = 0; j < image.cols; j++)
{
// Vec3b 一个uchar类型的,长度为3的vector向量。
// 对于RGB三通道的图像,每个点的数据都是一个Vec3b类型的数据。
image_.at<Vec3b>(i + x, j + y)[0] = image.at<Vec3b>(i, j)[0];
image_.at<Vec3b>(i + x, j + y)[1] = image.at<Vec3b>(i, j)[1];
image_.at<Vec3b>(i + x, j + y)[2] = image.at<Vec3b>(i, j)[2];
}
}
imshow("目前", image_);
imwrite("t2_.jpg", image_); // 把平移后的图像存储在t2_.jpg的文件中。
waitKey(0);
destroyAllWindows();
image.release();
image_.releas