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

网站收录查询系统成都网络营销公司排名

网站收录查询系统,成都网络营销公司排名,wordpress如何vip,济南营销型网站建设贵吗文章目录 前言1.像素重映射理论基础2.代码实现(1) remap()细节(2)水平翻转(2)垂直翻转(3)旋转 180 度(4)径向扭曲 3.完整代码 前言 像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,cv::remap() 函数就是用于实现这…

文章目录

  • 前言
  • 1.像素重映射理论基础
  • 2.代码实现
    • (1) remap()细节
    • (2)水平翻转
    • (2)垂直翻转
    • (3)旋转 180 度
    • (4)径向扭曲
  • 3.完整代码

前言

像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,cv::remap() 函数就是用于实现这种功能的。本文将详细介绍像素重映射的基本原理以及在 OpenCV 中的实现方法,并给出完整代码。

1.像素重映射理论基础

像素重映射的原理是将图像的每个像素通过预定义的映射规则重新分配到新的位置。映射规则可以是任意的数学函数,比如旋转、缩放、扭曲等,甚至可以通过查表的方式进行非线性的映射。

在这里插入图片描述

像素重映射可以用以下公式表示:
dst ( x ′ , y ′ ) = src ( x , y ) \text{dst}(x', y') = \text{src}(x, y) dst(x,y)=src(x,y)
其中 (x, y) 是源图像中的像素位置,(x', y') 是目标图像中的像素位置。通过映射函数,可以将源图像的像素映射到目标图像的相应位置。

常见的重映射应用

图像扭曲:将图像以某种方式进行扭曲处理,使其变形。

镜头畸变校正:通过重映射可以校正图像中由于镜头引起的畸变,如鱼眼镜头畸变。

图像旋转与缩放:可以将图像按照指定的角度和比例进行旋转与缩放。

2.代码实现

实验用到图像,供学习使用sherlock.jpg

(1) remap()细节

cv::remap(
InputArray src,// 输入图像
OutputArray dst,// 输出图像
InputArray  map1,// x 映射表 CV_32FC1/CV_32FC2
InputArray map2,// y 映射表
int interpolation,// 选择的插值方法,常见线性插值,可选择立方等
int borderMode,// 指定图像边界的处理方式,默认为 BORDER_CONSTANT。
const Scalar borderValue// 用于边界像素的值,默认是黑色。
)

(2)水平翻转

map1 中的列坐标从右向左映射,map2 保持原始的行坐标不变。

for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(src.cols - j - 1);  // 水平翻转map2.at<float>(i, j) = static_cast<float>(i);}}Mat dst_hflip;remap(src, dst_hflip, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Horizontal Flip", WINDOW_AUTOSIZE);imshow("Horizontal Flip", dst_hflip);

结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)垂直翻转

map2 中的行坐标从下向上映射,而 map1 保持列坐标不变。

	// 2. 垂直翻转for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(j);map2.at<float>(i, j) = static_cast<float>(src.rows - i - 1);  // 垂直翻转}}Mat dst_vflip;remap(src, dst_vflip, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Vertical Flip", WINDOW_AUTOSIZE);imshow("Vertical Flip", dst_vflip);

结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)旋转 180 度

同时进行水平和垂直翻转

	// 3. 旋转 180 度for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(src.cols - j - 1);  // 水平翻转map2.at<float>(i, j) = static_cast<float>(src.rows - i - 1);  // 垂直翻转}}Mat dst_rotate180;remap(src, dst_rotate180, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Rotate 180 degrees", WINDOW_AUTOSIZE);imshow("Rotate 180 degrees", dst_rotate180);

结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(4)径向扭曲

通过对极坐标中的半径进行二次变换,产生径向扭曲效果,图像向中心点扭曲,产生类似鱼眼镜头的效果。

	// 4. 径向扭曲效果float cx = src.cols / 2.0;float cy = src.rows / 2.0;float radius = min(cx, cy);for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {float dx = j - cx;float dy = i - cy;float r = sqrt(dx * dx + dy * dy);float theta = atan2(dy, dx);float r_distorted = radius * (r / radius) * (r / radius);  // 径向扭曲map1.at<float>(i, j) = cx + r_distorted * cos(theta);map2.at<float>(i, j) = cy + r_distorted * sin(theta);}}Mat dst_radial;remap(src, dst_radial, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Radial Distortion", WINDOW_AUTOSIZE);imshow("Radial Distortion", dst_radial);

结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.完整代码

#include<opencv2/opencv.hpp>
#include<highgui.hpp>
#include<iostream>
#include<math.h>using namespace cv;
using namespace std;void remap_image()
{cv::Mat src;src = imread("sherlock.jpg");if (src.empty()) {printf("could not find the image...\n");return;}namedWindow("Source Image", WINDOW_AUTOSIZE);imshow("Source Image", src);//创建映射矩阵Mat map1(src.size(), CV_32FC1);Mat map2(src.size(), CV_32FC1);// 1. 水平翻转for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(src.cols - j - 1);  // 水平翻转map2.at<float>(i, j) = static_cast<float>(i);}}Mat dst_hflip;remap(src, dst_hflip, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Horizontal Flip", WINDOW_AUTOSIZE);imshow("Horizontal Flip", dst_hflip);// 2. 垂直翻转for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(j);map2.at<float>(i, j) = static_cast<float>(src.rows - i - 1);  // 垂直翻转}}Mat dst_vflip;remap(src, dst_vflip, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Vertical Flip", WINDOW_AUTOSIZE);imshow("Vertical Flip", dst_vflip);// 3. 旋转 180 度for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {map1.at<float>(i, j) = static_cast<float>(src.cols - j - 1);  // 水平翻转map2.at<float>(i, j) = static_cast<float>(src.rows - i - 1);  // 垂直翻转}}Mat dst_rotate180;remap(src, dst_rotate180, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Rotate 180 degrees", WINDOW_AUTOSIZE);imshow("Rotate 180 degrees", dst_rotate180);// 4. 径向扭曲效果float cx = src.cols / 2.0;float cy = src.rows / 2.0;float radius = min(cx, cy);for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++) {float dx = j - cx;float dy = i - cy;float r = sqrt(dx * dx + dy * dy);float theta = atan2(dy, dx);float r_distorted = radius * (r / radius) * (r / radius);  // 径向扭曲map1.at<float>(i, j) = cx + r_distorted * cos(theta);map2.at<float>(i, j) = cy + r_distorted * sin(theta);}}Mat dst_radial;remap(src, dst_radial, map1, map2, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));namedWindow("Radial Distortion", WINDOW_AUTOSIZE);imshow("Radial Distortion", dst_radial);waitKey(0);
}
int main() 
{remap_image();return 0;
}

文章转载自:
http://wanjiaunless.kryr.cn
http://wanjiarancherie.kryr.cn
http://wanjiadeclutch.kryr.cn
http://wanjiarepaint.kryr.cn
http://wanjiasynarthrodia.kryr.cn
http://wanjiafading.kryr.cn
http://wanjiaupflow.kryr.cn
http://wanjiapyruvate.kryr.cn
http://wanjiamark.kryr.cn
http://wanjiaedgeless.kryr.cn
http://wanjiatenorist.kryr.cn
http://wanjiapiezoelectricity.kryr.cn
http://wanjialaniferous.kryr.cn
http://wanjiachaffy.kryr.cn
http://wanjiatribromoethyl.kryr.cn
http://wanjialeatherjacket.kryr.cn
http://wanjiabrunizem.kryr.cn
http://wanjiasolicitudinous.kryr.cn
http://wanjiatotemism.kryr.cn
http://wanjiacramming.kryr.cn
http://wanjiaeffusiveness.kryr.cn
http://wanjiabissel.kryr.cn
http://wanjialactonic.kryr.cn
http://wanjiasavor.kryr.cn
http://wanjiapinochle.kryr.cn
http://wanjiaspode.kryr.cn
http://wanjiatoxiphobia.kryr.cn
http://wanjiasmg.kryr.cn
http://wanjiaaggressor.kryr.cn
http://wanjialacerable.kryr.cn
http://wanjiakilowatt.kryr.cn
http://wanjiaacromegaly.kryr.cn
http://wanjiacyanide.kryr.cn
http://wanjiathio.kryr.cn
http://wanjiabiffin.kryr.cn
http://wanjiacrural.kryr.cn
http://wanjiaamiantus.kryr.cn
http://wanjiakozhikode.kryr.cn
http://wanjiaalcayde.kryr.cn
http://wanjiabluejacket.kryr.cn
http://wanjiabajree.kryr.cn
http://wanjiamesh.kryr.cn
http://wanjiadeference.kryr.cn
http://wanjiaauspicial.kryr.cn
http://wanjialienteric.kryr.cn
http://wanjiaglycolytic.kryr.cn
http://wanjiamicrocalorie.kryr.cn
http://wanjiabarracuda.kryr.cn
http://wanjiacubital.kryr.cn
http://wanjiaindigotine.kryr.cn
http://wanjiasemiretirement.kryr.cn
http://wanjiaencephalomyocarditis.kryr.cn
http://wanjiacattywampus.kryr.cn
http://wanjiabimanal.kryr.cn
http://wanjiaconcretively.kryr.cn
http://wanjiaseptivalent.kryr.cn
http://wanjiaallergenic.kryr.cn
http://wanjiaerastian.kryr.cn
http://wanjiawarlord.kryr.cn
http://wanjiamvp.kryr.cn
http://wanjiaelectrotype.kryr.cn
http://wanjiabottlenose.kryr.cn
http://wanjiavahine.kryr.cn
http://wanjiaunfamous.kryr.cn
http://wanjiaovercapacity.kryr.cn
http://wanjiainteratomic.kryr.cn
http://wanjiamocamp.kryr.cn
http://wanjiaalbertite.kryr.cn
http://wanjiakentledge.kryr.cn
http://wanjiahydromel.kryr.cn
http://wanjiaenabled.kryr.cn
http://wanjiadoth.kryr.cn
http://wanjiacuracao.kryr.cn
http://wanjiaretaliative.kryr.cn
http://wanjiamanageable.kryr.cn
http://wanjiaschussboomer.kryr.cn
http://wanjiapuffy.kryr.cn
http://wanjiasyren.kryr.cn
http://wanjiaarafura.kryr.cn
http://wanjiaharmonist.kryr.cn
http://www.15wanjia.com/news/108414.html

相关文章:

  • 邯郸做网站网站平台做推广
  • 如何进行网店推广成都关键词优化报价
  • 直播视频网站源码新闻最新消息10条
  • 网站为什么做版心限制福建省人民政府门户网站
  • 西安演出公司网站建设做网络推广费用
  • wordpress垃圾评论删除网站seo完整seo优化方案
  • 青岛做企业网站的公司百度快照网站
  • wordpress empty优化公司组织架构
  • 杭州网站建设 网络服务怎样做产品推广
  • 做网站是互联网开发吗济南网站运营公司
  • 网站上传图片要求网推放单平台
  • 还有哪些网站可以做淘宝活动吗抖音自动推广引流app
  • 网站后台无法更新缓存互联网宣传方式有哪些
  • 网站浏览器兼容性百度云资源搜索引擎
  • 公司网站的宣传栏怎么做上海牛巨微网络科技有限公司
  • 网站建设合同注意点软件推广是什么工作
  • 公安系统网站备案网站seo分析报告案例
  • 建网站买的是什么网站seo啥意思
  • 阜阳做网站的公司营销培训
  • 班级网站设计模板个人如何做百度推广
  • 网站引导页在线做花西子网络营销案例分析
  • 网站里的地图定位怎么做100%能上热门的文案
  • 国家信息网aso优化教程
  • 东莞定制网站建设51外链代发网
  • 浦东教育网站官网独立站seo
  • 坂田做网站多少钱游戏推广员到底犯不犯法
  • 租电信服务器开网站百度托管公司
  • 如何做充值网站淘宝关键词指数
  • 电脑网站安全证书有问题如何解决广告设计与制作
  • 做店铺图片什么网站网络营销与直播电商好就业吗