当前位置: 首页 > news >正文

北京电商购物网站佳木斯建设局网站

北京电商购物网站,佳木斯建设局网站,阿里云市场网站建设,淘宝设计网页多少钱目录 实验原理 示例代码#xff11; 运行结果#xff11; 示例代码#xff12; 运行结果#xff12; 实验原理 OpenCV中#xff0c;图像平移是一种基本的几何变换#xff0c;指的是将图像中的每一个像素点沿着水平方向或垂直方向移动一定的距离。图像平移不改变图像…目录 实验原理 示例代码 运行结果 示例代码 运行结果 实验原理 OpenCV中图像平移是一种基本的几何变换指的是将图像中的每一个像素点沿着水平方向或垂直方向移动一定的距离。图像平移不改变图像的大小和形状只是改变了图像的位置。在计算机视觉和图像处理领域平移操作可以用于数据增强、图像对齐等任务。 在OpenCV中可以通过仿射变换Affine Transformation来实现图像的平移。 图像平移的原理图像平移实际上是一种特殊的仿射变换其中不涉及旋转或缩放只是简单地将图像沿水平或垂直方向移动一段固定的距离。 仿射变换的应用仿射变换可以用于多种几何变换 例如 •平移只需要修改矩阵中的tx和ty值即可。 •旋转需要构造一个包含旋转角度的矩阵。 •缩放通过调整矩阵中的a和d值来控制水平和垂直方向的缩放比例。 •倾斜通过调整矩阵中的b和c值来控制剪切shear效果。 要使用OpenCV进行图像平移可以通过以下步骤实现 1.定义平移矩阵  2.应用平移变换 使用 cv::warpAffine 函数可以应用这个变换到图像上。首先需要创建一个与上述形式一致的平移矩阵然后使用该函数完成平移操作。 cv::warpAffine 是 OpenCV 库中用于执行仿射变换的一个函数它可以实现图像的旋转、缩放、剪切以及平移等操作。其函数原型如下 void warpAffine(InputArray src, // 输入图像OutputArray dst, // 输出图像InputArray M, // 2x3 的变换矩阵  仿射变换矩阵Size dsize, // 输出图像的大小int flags INTER_LINEAR, // 插值方法默认为双线性插值int borderMode BORDER_CONSTANT, // 边界模式const Scalar borderValue Scalar() // 边界填充值 );函数参数说明 •src输入图像可以是任何类型的单通道或多通道图像。 •dst输出图像与输入图像具有相同的类型大小由dsize参数指定。 •M仿射变换矩阵通常是一个2x3的浮点矩阵。这个矩阵包含仿射变换所需的六个参数。 •dsize输出图像的大小。可以指定为Size(width, height)形式或者使用 src.size() 保持与源图像相同的大小。 •flags插值方法默认为INTER_LINEAR双线性插值。其他可选的插值方法包括 •INTER_NEAREST最近邻插值。•INTER_LINEAR双线性插值。•INTER_CUBIC三次样条插值。•INTER_LANCZOS4兰茨科斯插值。 •borderMode边界处理模式默认为BORDER_CONSTANT用常数值填充边界。其他可选的边界处理模式包括 •BORDER_CONSTANT用常数值填充边界。•BORDER_REPLICATE边界像素值向外复制。•BORDER_REFLECT边界像素值向内反射。反射边界如12345反射为45454。•BORDER_WRAP边界像素值循环。循环边界如12345循环为34512。•borderValue边界填充值默认为黑色全零向量。只有在borderMode为BORDER_CONSTANT时有效。 总结 图像平移是通过仿射变换来实现的它涉及到将图像中的每一个像素按照一定的方向和距离移动到新的位置。在OpenCV中可以通过构建一个2x3的仿射变换矩阵并使用cv::warpAffine函数来实现图像的平移。通过调整平移参数tx和ty可以控制图像在水平方向和垂直方向的平移量。此外还可以通过指定不同的边界处理方式来处理平移后超出原图像范围的情况。 示例代码 #include pch.h #include opencv2/opencv.hpp #include iostreamint main(int argc, char** argv) {// 加载图像cv::Mat img cv::imread(B3.png);if (img.empty()){std::cout Error: Image not found. std::endl;return -1;}// 定义平移的距离int tx 30; // 沿x轴平移30个像素int ty -70; // 沿y轴平移-70个像素向上// 创建平移矩阵cv::Mat translationMatrix (cv::Mat_double(2, 3) 1, 0, tx,0, 1, ty);// 应用平移变换cv::Mat translatedImg;cv::warpAffine(img, translatedImg, translationMatrix, img.size());// 显示原图和翻译后的图像cv::namedWindow(Original Image, cv::WINDOW_NORMAL);cv::imshow(Original Image, img);cv::namedWindow(Translated Image, cv::WINDOW_NORMAL);cv::imshow(Translated Image, translatedImg);cv::waitKey(0);return 0; }在这个例子中我们加载了一张图片 并定义了一个平移矩阵 translationMatrix。 接着我们使用 cv::warpAffine 函数 输入原始图像、平移矩阵以及输出图像的尺寸在这里我们保持了原始图像的大小。 最后我们显示原图和平移后的图像并等待用户按键退出。 运行结果 示例代码 // test.cpp : 此文件包含 main 函数。程序执行将在此处开始并结束。 //#include pch.h #include iostream #include opencv2/imgproc/imgproc.hpp #include opencv2/highgui/highgui.hpp #include opencv2/core/core.hpp #include iostream//#pragma comment(lib, opencv_world450d.lib) //引用引入库 //平移操作图像大小不变 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.atcv::Vec3b(i, j) srcImage.ptrcv::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.atcv::Vec3b(i, j) srcImage.ptrcv::Vec3b(y)[x]; }}}return resultImage; }int main() {//读取图像cv::Mat srcImage cv::imread(02.jpeg);if (srcImage.empty()){return -1;}//显示原图像cv::namedWindow(原图, CV_WINDOW_NORMAL);cv::imshow(原图, srcImage);int x0ffset 50;int y0ffset 80;cv::Mat resultImage1 imageTranslation1(srcImage, x0ffset, y0ffset);cv::namedWindow(移动1, CV_WINDOW_NORMAL);cv::imshow(移动1, resultImage1);cv::Mat resultImage2 imageTranslation2(srcImage, x0ffset, y0ffset);cv::namedWindow(移动3, CV_WINDOW_NORMAL);cv::imshow(移动3, resultImage1);x0ffset -50;y0ffset -80;cv::Mat resultImage3 imageTranslation1(srcImage, x0ffset, y0ffset);cv::namedWindow(移动2, CV_WINDOW_NORMAL);cv::imshow(移动2, resultImage3);cv::waitKey(0);return 0; } 运行结果
http://www.hkea.cn/news/14262206/

相关文章:

  • c 购物网站开发流程图中交路桥建设有限公司待遇怎么样
  • 住房和建设部执业资格注册中心网站网站小编可以在家做吗
  • 住房和城乡建设部网站三定易企建站
  • WordPress网站hym地图网页视频怎么下载到手机相册
  • 农业电商网站建设湖南人事考试网
  • 华亭网站建设做网站经验
  • 电子工程设计网站北京快三开奖走势图一定牛
  • 网站服务内容怎么写wordpress电子邮件注册
  • 网站开发 微盘网站建设与管理答案
  • 上海网站建设电话租车网站建设系统的设计
  • 夏天做哪些网站致富湖北最新数据消息
  • 和田做网站的联系电话做网站需要硬件软件
  • 爱站网站长工具如何给公司做网站
  • 怎么优化网站郑州网站建设企业推荐
  • 陕西网站制作公司哪家好如何做微信小程序网站
  • 网站空间怎么收费官方网站welcome
  • 怎样做网站优化找代理商的渠道有哪些
  • 做网站建设的利润静安手机网站建设
  • 站长之家 wordpress 流量统计郑州网站推广排名
  • 比较好的网站空间国内免费建站网站
  • 网站建设明细报价表仅供参考佛山网站优化怎么做
  • 祥云平台网站建设中英版网站怎么做
  • 大连网站排名网络推广公司建设局属于什么行业
  • 网站301跳转代码网站程序制作教程
  • 建网站对企业的作用免费注册公司邮箱
  • 四川建设厅网站怎么进不去制作单页网站多少钱
  • 郑州汉狮公司做网站wordpress获取文章链接
  • 无锡专业做网站的公司有哪些一个公司怎么做网站都放些什么
  • 创建手机网站免费万盛网站建设公司
  • 外贸网站seo旅游 wordpress