全息广告机上的POV扇形取模的一种简单实现方式

2023-10-29 06:10

本文主要是介绍全息广告机上的POV扇形取模的一种简单实现方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    如果你在网上用google搜索“POV led”一词(POV即persistancd of vision),会找到世界各地的各种LED旋转屏的制作介绍。那些摇晃出的空中图案,漂浮在车轮上的动画,以及形态各异的时钟,一定给你留下深刻印象。其实他的实现原理很简单,通过视觉暂留现象,让显示的内容在人脑中呈现出连贯的图像。而难点在于常规的图片像素点是在直角坐标下描述的,而旋转LED设备是典型的极坐标体系,需要将常规图片转换成极坐标上的像素点,才能正常显示,本文介绍了一种使用python实现的简单的方法将图像的像素点由直角坐标转换成极坐标。

3då¨æ¯å¹¿åæº,3Då¨æ¯æ转广åæº,3då¨æ¯å¹¿åæºå家-è¾å®è¾¾å®ç½å¨æ¯å¹¿åæºä¸æ¶²æ¶å¹¿åæºçå·®å«_å½±å

 

    python上集成opencv模块,使用opencv上的转换函数可以轻松将直角坐标转换成极坐标,参考《Python-openCV极坐标变换(图像变换)》https://blog.csdn.net/clm1206/article/details/79786151?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

    然后使用使用pyqt开发ui界面,就可以制作一个简单的取模软件。

 直角坐标与极坐标对应转换关系:

                             x,y=cv2.polarToCart(r,theta,angleInDegrees=True)

然后将图片内的像素点的直角坐标和极坐标建立一个一一对应的映射,这样就可以轻松对图片进行旋转扇形取模。下面的代码实现了直角坐标转换成极坐标,然后映射成极坐标下的像素点

#coding=utf-8
import numpy as np
import cv2
def img_polar_transform(input_img,center,r_range,theta_rangge=(0,360),r_step=0.5,theta_step=360.0/(180*8)):minr,maxr=r_rangemintheta,maxtheta=theta_ranggeH=int((maxr-minr)/r_step+1)W=int((maxtheta-mintheta)/theta_step+1)output_img=125*np.ones((H,W),input_img.dtype)x_center,y_center=center#极坐标变换r=np.linspace(minr,maxr,H)r=np.tile(r,(W,1))r=np.transpose(r)#矩阵的转置theta=np.linspace(mintheta,maxtheta,W)theta=np.tile(theta,(H,1))#在垂直方向重复H次,水平重复1次x,y=cv2.polarToCart(r,theta,angleInDegrees=True)#最邻近插值for i in range(H):for j in range(W):px=int(round(x[i,j])+x_center)py = int(round(y[i, j]) + y_center)if ((px>=0 and px<=W-1) and (py>=0 and py<=H-1)):output_img[i,j]=input_img[px,py]return output_img
input_img = cv2.imread('timg.jpeg', cv2.CV_LOAD_IMAGE_GRAYSCALE)
h,w=input_img.shape[:2]
center=(int(h/2),int(w/2))
r_range=(0,300)
output_img=img_polar_transform(input_img,center,r_range)
cv2.imshow('img',input_img)
cv2.imshow('polar',output_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

原图(480x480)

极坐标转换后的图(230x1440) 沿着圆形逆时针旋转一周取模1440次,每一次取230个像素点

使用极坐标像素点还原图形

 

使用pyqt开发的简易页面

界面操作

取模成功后会生成output.h文件,里面包含了极坐标下的像素点RGB数据。

demo工具已经上传到百度云,实现单张图片的取模,若需要更多功能,请联系qq:821254445

链接:https://pan.baidu.com/s/1cxjH-35uaOlieK3FC7XjXg 
提取码:sbsk

 

这篇关于全息广告机上的POV扇形取模的一种简单实现方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298745

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

如何突破底层思维方式的牢笼

我始终认为,牛人和普通人的根本区别在于思维方式的不同,而非知识多少、阅历多少。 在这个世界上总有一帮神一样的人物存在。就像读到的那句话:“人类就像是一条历史长河中的鱼,只有某几条鱼跳出河面,看到世界的法则,但是却无法改变,当那几条鱼中有跳上岸,进化了,改变河道流向,那样才能改变法则。”  最近一段时间一直在不断寻在内心的东西,同时也在不断的去反省和否定自己的一些思维模式,尝试重

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

idea lanyu方式激活

访问http://idea.lanyus.com/这个地址。根据提示将0.0.0.0 account.jetbrains.com添加到hosts文件中,hosts文件在C:\Windows\System32\drivers\etc目录下。点击获得注册码即可。

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页: