Opencv 极坐标变换

变换后图片

代码

// 以Center为极坐标原点,将RowFrom到RowTo的圆环,仅仅变换该范围内的点,忽略掉其他部分。

cpp 复制代码
#include "polar_transeforme.hpp"
#include <string>

using namespace cv;



void calculate_map(int rouFrom, int rouTo, Point2d center, Mat& map)
{
	int heightDst = map.size().height;
	int widthDst = map.size().width;

	float dTheta = 2 * PAI / heightDst;

	for (int r = 0; r < heightDst; r++)
	{
		float* pRow = (float*)map.data + r * 2 * widthDst;
		float curTheta = r * dTheta;
		float cosTheta = cos(curTheta);
		float sinTheta = sin(curTheta);
		for (int c = 0; c < widthDst; c++)
		{
			float* pCur = pRow + c * 2;
			int rou = c + rouFrom;
			*pCur = rou * cosTheta + center.x;
			pCur++;
			*pCur = center.y - rou * sinTheta;
		}
	}
}


Mat polar_transeforme(Mat& oriImage, int rouFrom, int rouTo, Point2d center)
{
	int heightDst = 2 * PAI * rouFrom;
	int widthDst = rouTo - rouFrom;
	Mat map(Size(widthDst, heightDst), CV_32FC2);
	calculate_map(rouFrom, rouTo, center, map);

	Mat dstMat;
	remap(oriImage, dstMat, map, Mat(), INTER_CUBIC, 0);
	return dstMat;
}

Point2d polar2Origin(Point2d p, Point2d center, int rouFrom, float dTheta)
{
	float theta = p.y / rouFrom;
	float rou = p.x;
	float tempX = center.x + rou * sin(theta);
	float tempY = center.y - rou * cos(theta);
	return Point2d(tempX, tempY);
}


int main()
{
	const std::string strImagePath = "示例图片.jpg";
	Mat oriImg = imread(strImagePath, IMREAD_GRAYSCALE);
	Point2d center(237, 237);
	int rouFrom = 110;
	int rouTo = 230;
	
	Mat polarImg = polar_transeforme(oriImg, rouFrom, rouTo, center);

	int test = 0;
	return 0;
}
相关推荐
IT·陈寒1 分钟前
小智 AI 智能音箱 MCP 开发实战:从环境搭建到自定义语音技能完整指南
人工智能·语音识别·智能音箱
这张生成的图像能检测吗3 分钟前
(论文速读)一种基于双目视觉的机器人螺纹装配预对准姿态估计方法
人工智能·计算机视觉·机器人·手眼标定·位姿估计·双目视觉·螺纹装配
TextIn智能文档云平台6 分钟前
图片表格怎么转换成Markdown格式
人工智能·文档处理
zhaodiandiandian7 分钟前
I浪潮下的就业重构:挑战、机遇与转型
人工智能·重构
从零开始学习人工智能7 分钟前
PDF解析双雄对决:Unstructured vs PyMuPDF 深度对比与选型指南
数据库·人工智能·机器学习
黑客思维者7 分钟前
SM1/SM2/SM3/SM4核心场景与实战案例深度解析
人工智能·加密·sm1/sm2/sm3/sm4
盟接之桥10 分钟前
盟接之桥说制造:“盟接之桥”为何成了“断桥”?——制造企业困局突围的三重思考
大数据·人工智能·物联网·产品运营·制造
生成论实验室11 分钟前
周林东的生成论入门十讲 · 第一讲 问题的根源——我们活在“制造的文明”里
人工智能·科技·神经网络·信息与通信·几何学
WebCandy16 分钟前
【开源】一个丝滑的 Claude Code 环境变量快速切换工具
人工智能·aigc·ai编程
共绩算力20 分钟前
更小模型实现更强视觉 OCR
人工智能·ocr·共绩算力