根据鱼眼相机公式rf=f*θ,其中θ=atan(rc/f),即可实现从pinhole相机模型到fisheye相机模型的像素映射。可自行设置焦距,我使用如下代码完成了将cityscape数据集转换为鱼眼视角。

import numpy as np
import cv2
import osclass ConvertFisheye():"""rf = f*atan(rc/f)其中theta=atan(rc/f)"""def __init__(self):self.focal_length = 520  # 可自行设置fisheye焦距def convert(self, img):h, w = img.shape[0], img.shape[1]dstImg = np.zeros(img.shape, np.uint8)ux, uy = w/2, h/2  # 传统图像的主点,principle point(也是鱼眼的主点,因为同分辨率的)for i in range(h):for j in range(w):dx, dy = j-ux, i-uy  # 传统图像的图像坐标rc = np.sqrt(dx**2 + dy**2)  # distance between the image point and the principal pointtheta = np.arctan2(rc, self.focal_length)  # θ is the angle between the principal axis and the incoming raygama = np.arctan2(dy, dx)  # 图像点到图像主点的连线的角度,鱼眼和传统都一样rf = self.focal_length*thetaxf = rf*np.cos(gama)yf = rf*np.sin(gama)x = int(xf + ux)  # 原图j对应鱼眼的xy = int(yf + uy)  # 原图i对应鱼眼的ydstImg[y][x] = img[i][j]# cv2.imshow('a', dstImg)# cv2.waitKey()return(dstImg)if __name__ == "__main__":input_root_path = 'E:\\all_dataset\\cityscape_val\\val' output_root_path = 'E:\\all_dataset\\cityscape_fisheye_val\\label_img' cf = ConvertFisheye()i = 0if not os.path.exists(output_root_path):os.makedirs(output_root_path)for root, dirs, files in os.walk(input_root_path):for f in files:if 'color' in f and not os.path.exists(os.path.join(output_root_path, f)):i += 1img_path = os.path.join(root, f)print(img_path, i)img = cv2.imread(img_path)dstImg = cf.convert(img)cv2.imwrite(os.path.join(output_root_path, f), dstImg)

python-opencv实现pinhole相机图像转fisheye相机图像相关推荐

  1. python opencv imread()函数 (从文件加载图像)

    def imread(filename, flags=None): # real signature unknown; restored from __doc__"""i ...

  2. [python opencv 计算机视觉零基础到实战] 六、图像运算

    一.学习目标 了解opencv中图像运算的方法 了解opencv中图像运算的运用 如有错误欢迎指出~ 二.了解OpenCV中图像运算的运用 目录 [python opencv 计算机视觉零基础到实战] ...

  3. python opencv打开图片 关闭_自学python-opencv(9)图像开闭操作

    开操作(Open) 图像形态学的重要操作之一,基于膨胀与腐蚀操作组合形成的 主要是应用在二值图像分析中,灰度图像亦可 开操作=腐蚀+膨胀,输入图像+结构元素 --------------------- ...

  4. Python OpenCV _1基本操作(画图,循环播放图像,鼠标事件,读取中文路径中的图片)

    此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV 一,OpenCV的结构 A)根据功能和需求的不同,OpenCV中的函数接 ...

  5. python opencv 保存图片_【python-opencv 】一、图像的加载与保存

    1.准备工作 没学过Python... 然后再cmd下输入 pip install opencv-python 还装了个IDE PyCharm 2.读取和显示一张图片 importcv2 as cv ...

  6. Python OpenCV学习笔记之:分水岭算法分割图像

    为什么80%的码农都做不了架构师?>>>    # -*- coding: utf-8 -*- """ 图像分水岭分割图像 分水岭算法可以参考:http ...

  7. python opencv imread(filename, flags=None) 读取图像 flags cv::ImreadModes 参数上哪看去?

    在调用opencv的imread(filename, flags=None)函数时,后面有个flags=None参数,但打开文档轻描淡写,不知该参数上哪找去,用全局搜索也搜不到,莫非要到官网查?(擦汗 ...

  8. [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充

    一.学习目标 了解什么是ROI 了解floodFill的使用方法 如有错误欢迎指出~ 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[pyth ...

  9. [python opencv 计算机视觉零基础到实战] 七、逻辑运算与应用

    一.学习目标 了解opencv中图像的逻辑运算 了解opencv中逻辑运算的应用 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python ...

最新文章

  1. 【解惑】这么多技术我该怎么学 [转]
  2. 测试框架 如何测试私有方法_高效的企业测试–测试框架(5/6)
  3. == 和 equals方法的区别
  4. DirectAccess部署(四)之双网卡环境 客户端连接测试(多图!)
  5. linux ----Inode的结构图
  6. Python3 正则表达式学习
  7. 隐藏input的光标
  8. OpenCV(iOS)平滑处理(模糊,毛玻璃)(10)
  9. 驱动级音效增强软件Dolby Home Theater V4
  10. 【细胞分割】基于中值滤波+分水岭法实现细胞计数matlab源码
  11. 人生的第一篇博客φ(>ω<*)
  12. ftpserver配置
  13. 桌面图标全部成被选中状态解决办法
  14. 浅谈机器学习之深度学习
  15. Gerrit升级和升级后的check(包括gerrit mirror 服务器上的升级)
  16. 基于Spark的案例:同义词识别
  17. 揭秘分析:朋友圈集赞引流套路,老用户是如何带来裂变效果?
  18. SafePoint是什么
  19. OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解
  20. xp系统扫描仪服务器,xp系统怎么安装扫描仪驱动

热门文章

  1. 奇酷学院-数据采集及其可视化(三)
  2. 年底了,你感受到被KPI支配的恐惧了吗?
  3. rust语言的配置与编译 Day01
  4. mysql中除数为0怎么解决_ora-01476除数为0的解决办法,oracle中decode()的使用
  5. 联想全球首席技术官研究进一步增强其“新IT”愿景,塑造更智能的未来
  6. 解决百度地图API无法正常显示地图
  7. Windows Codename“Longhorn“ Build 4074体验
  8. 2022年河北省注册会计师考试《会计》精选题及答案
  9. ORA-19566 exceeded limit of 0 corrupt blocks数据坏块处理
  10. GPT-2隐私泄露论文阅读:Extracting Training Data from Large Language Models