opencv实现图像平移
来源:互联网 发布:淘宝可以参加聚划算吗 编辑:程序博客网 时间:2024/04/29 14:53
图像的平移操作是将图像的所有像素坐标进行水平或者垂直方向移动,也就是所有像素点按照给定的偏移量在水平方向上沿x轴、垂直方向上沿y轴移动。平移变换分为两种,图像大小变化和图形大小不变。第一种是保证图像平移的完整性,第二种图像原信息可能部分丢失。
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
//平移操作,图像大小不变
cv::Mat imageTranslation1(cv::Mat & srcImage, int x0ffset, int y0ffset)
{
int nRows = srcImage.rows;
int nCols = srcImage.cols;
cv::Mat resultImage(srcImage.size(), srcImage.type());
//遍历图像
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
//映射变换
int x = j - x0ffset;
int y = i - y0ffset;
//边界判断
if (x >= 0 && y >= 0 && x < nCols && y < nRows)
{
resultImage.at<cv::Vec3b>(i, j) = srcImage.ptr<cv::Vec3b>(y)[x];
}
}
}
return resultImage;
}
//平移操作,图形大小改变
cv::Mat imageTranslation2(cv::Mat & srcImage, int x0ffset, int y0ffset)
{
//设置平移尺寸
int nRows = srcImage.rows + abs(y0ffset);
int nCols = srcImage.cols + abs(x0ffset);
cv::Mat resultImage(nRows, nCols, srcImage.type());
//图像遍历
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
int x = j - x0ffset;
int y = i - y0ffset;
//边界判断
if (x >= 0 && y >= 0 && x < nCols && y < nRows)
{
resultImage.at<cv::Vec3b>(i, j) = srcImage.ptr<cv::Vec3b>(y)[x]; //Vec3b是一种图像像素值的类型
}
}
}
return resultImage;
}
int main()
{
//读取图像
cv::Mat srcImage = cv::imread("C:\\Users\\LP\\Desktop\\C++\\ConsoleApplication4\\ConsoleApplication4\\1.jpg");
if (srcImage.empty())
{
return -1;
}
//显示原图像
cv::imshow("原图像", srcImage);
int x0ffset = 50;
int y0ffset = 80;
//图像左平移不改变大小
cv::Mat resultImage1 = imageTranslation1(srcImage, x0ffset, y0ffset);
cv::imshow("resultImage1", resultImage1);
//图像左平移改变大小
cv::Mat resultImage2 = imageTranslation2(srcImage, x0ffset, y0ffset);
cv::imshow("resultImage2", resultImage2);
//图像又平移不改变大小
x0ffset= -50;
y0ffset = -80;
cv::Mat resultImage3 = imageTranslation1(srcImage, x0ffset, y0ffset);
cv::imshow("resultImage3", resultImage3);
cv::waitKey(0);
return 0;
}
阅读全文
0 0
- opencv实现图像平移
- 基于OpenCV实现图像平移
- opencv 数字图象处理 图像平移变换
- OpenCV 几何变换-图像平移
- OpenCV编程->图像的平移
- 用OpenCV实现图像平移的代码(分图像尺寸不变和变两种情况)
- Opencv之图像平移、镜像
- OpenCV编程->二维图像的平移warpAffine
- opencv 中通过鼠标和键盘操作实现图像的平移
- OpenCV在图像上抠取指定区域平移、缩放的图像
- matlab实现图像的平移、旋转、缩放
- matlab实现图像的平移、旋转、缩放
- PhotoShop算法实现-- 图像平移(十五)
- MATLAB实现图像平移的源代码!
- Matlab 实现图像的平移,旋转,缩放
- 图像平移 ——MATLAB实现
- 平移图像
- 图像平移
- socket之tcp多进程客户服务器编程
- opencv实现图像的缩放
- 2017 ICPC WF I Secret Chamber at Mount Rushmore【基础/签到】
- 0526 CF#400A&G2n#B
- Vue.js(1)--下载与简单实用
- opencv实现图像平移
- 图像的几何变换之坐标映射
- Android APK反编译就这么简单 详解(附图)
- opencv实现图像的灰度转换,均值滤波,实现图像的显示和存储
- Ubuntu下mysql安装配置
- 如何在不打开Visual Studio的情况下启动HlpViewer.exe
- PCA特征降维
- golang walk界面库 最小化事件
- python实现kmeans算法