OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6053|回复: 4

第一次发分享帖,一个自创的opencv半圆柱投影代码

[复制链接]

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2020-1-15
在线时间
56 小时
发表于 2022-4-7 11:15:38 | 显示全部楼层 |阅读模式
本帖最后由 LEESUMI 于 2022-4-7 11:23 编辑

第一次发分享帖没有经验,不当之处请包涵
原理.jpg

原理图如上图,当我们平行的拍摄圆柱的侧边时,我们拍到的图像实际显示为一个矩形ABCD,目标是通过这个二维的ABCD矩形,还原成真正的半圆柱展开图
原理很简单,设矩形ABCD内一点(x,y)矩形中线的距离为y,矩形的高为rows,那么有sinα=y/(rows/2),α=arcsin(y/(rows/2))
对应的弧长L/(π*rows)=α/(2*π),则L=rows*α/2,将这个L投影到新平面ABCD(带一撇)上,依次遍历,就能得到投影后的图像。新图像的宽不变,高显然是rows*π/2.
我使用的原图取自固体胶胶棒,原图如下图所示:
4.1.jpg
opencv对原图的像素依次遍历得到新图,而新图的尺寸变大了,那必然会导致新图上的某些行没有被投影到像素,会形成一根根黑线,如下图所示 展开后.jpg
这时我按行遍历像素,当遍历到全行都是全黑像素时(0,0,0),取该行上方和下方最近的非全黑像素,取上下像素RGB的均值, 赋值给这行全黑像素,这样就把黑线消除了。
最后的效果如下图,可以看到原来AP椭圆变的很接近正圆,条形码上的数字变的更直,右上角那个三角形的标志变的更像正三角形了,实现了基本的功能要求。
因为拍摄视角的关系,原始图像都会带点透视,所以最后得到的并非是完美的投影图,还请注意。
filled.jpg TRY.rar (16.77 KB, 下载次数: 8)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1976
金钱
1976
注册时间
2021-4-16
在线时间
505 小时
发表于 2022-4-7 12:07:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2022-4-7 14:42:06 | 显示全部楼层
66666666666666
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2018-10-15
在线时间
46 小时
发表于 2022-7-4 14:40:27 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-7-5 10:31:56 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 18:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表