兮嘉

三国已淡圈,相关内容走知乎或归档三国tag。
最近发塞老师的疯,我就是霍格沃茨最强黑巫师!

 

PIL和OpenCV图像格式的转换问题(Saeyoung x 你)

* MC私设是一位算法工程师

* 这不是一篇同人小说,只是一篇技术博客,作者真的沙雕

Saeyoung忽然毫无征兆地号叫了起来,至少在你看来是“毫无征兆”的。你一脸疑惑地看了他一眼,他则委屈巴巴地抱怨道:”我叫你,你都不理我……“
“有……有吗……”你有些心虚地把视线又移回到面前的电脑屏幕上。
“有!我叫了你7遍,整整7遍你都没有理我!”
这下你基本可以肯定他绝对是有些夸张了,虽然你刚才确实沉浸于debug,但绝对不至于他叫了自己7遍都没听到……
这个奇怪的bug搞得你有点抓狂,你没好气地说了一句:“我在debug,有什么事等下再来烦我。”
“啊~~~~~~~”Saeyoung更夸张地号叫起来,“这里有人要对God Seven始乱终弃了!”
你惊讶地瞪大了眼睛:“我什么时候对你始乱终弃了?”
Saeyoung一脸泫然欲泣的样子:“你让我别再烦你了……这还不是始乱终弃吗?”
“我……我只是让你等下再来烦我!我没让你别再烦我了啊!”Saeyoung的胡搅蛮缠加上死线将至加上还没有解决的bug让你有点欲哭无泪。
大概是注意到了你不断释放的低气压,Saeyoung也收起了玩笑的心思,拉过一张椅子坐在你身边,笑嘻嘻地问道:“好啦好啦,现在正是伟大的God Seven出场的时候,让我来看看是什么样的bug居然让你作出始乱终弃这种事!”
你推了推Saeyoung摇了摇头道:“毕竟是我的工作,总是麻烦你也不好,况且这也不是Saeyoung专攻的领域,你再给我点时间我一定能解决的,等下我们出去吃好吃的。”
居然被鄙视了……明明之前都一副很崇拜自己的样子,有什么问题都会来请教自己,现在却说什么不是自己专攻的领域,虽然你说的确实没错,你平时的工作是机器学习和人工智能相关,而他则是专攻安全领域……
但是伟大的God Seven怎么可能轻易被鄙视,本来是你不想给他添麻烦的无心话语反而激起了Saeyoung的斗志。他一脸严肃地站了起来:“你的代码上传到github了吧,把我添加为协作者,我们看看谁先找出bug!”
难得这么严肃的Saeyoung让你吃了一惊,你忙道:“真的不用了,我很快就可以搞定。”Saeyoung哪可能如此轻易放弃,马上跑过来抱住你的胳膊撒娇道:“哎呀,我肚子饿了,我们快点搞定这个bug,可以去吃好吃的!”
可恶……这个家伙绝对是吃定你了。平时明明作息习惯特别混乱,难得主动提出肚子饿了要去吃饭,你怎么可能拒绝……
你叹了口气只好按他说的把他添加为协作者,然后跟他描述起了你的bug:“我最近在做的项目是通过分析闭路电视拍到的视频进行违章停车的自动识别。因为是第一次做视频分析,所以我想先把任务拆解,专注于识别算法本身。具体来说就是用opencv的VideoCapture按帧读取然后保存关键帧在本地,后续的识别算法则是在这些保存的本地图片上进行识别的。等我把算法调好以后就想省略这个拆分帧的步骤,直接读取帧以后进行实时识别。但是很奇怪的是,结果却变差了好多。这不合理,因为我明明就只是省略保存帧到本地再读取的过程,这和我使用的算法根本没关系啊。”
Saeyoung很专注地听着你的解释若有所思,大致明白了你的困扰所在变移过自己的笔记本pull了你的代码看起来。你有些纠结地看了看Saeyoung又看了看代码,既希望他快点看出问题所在,又不希望他这么快看出来,于是小心翼翼地问道:“你之前用过opencv吗?”Saeyoung的视线没有离开屏幕回答道:“之前做Zen的那个蓝鸟bot的时候用过它来从音乐剧里自动截屏……”
如果自己没想错,问题一定还是出在opencv的使用上,Saeyoung有用过的话一定又几分钟就能解决了吧,你有些郁闷地把头砸在桌面上继续散发低气压。稍微平复了一下心情当你再次抬头的时候Saeyoung已经在bling bling地看着你。“你别告诉我你已经……”你有点难以置信地看着Saeyoung,深深感到了天才和凡人的差距……
“可恶!究竟是什么问题嘛!”你郁闷地捶桌……他又笑嘻嘻地看着你张开怀抱:“需要God Seven显灵,他的信徒必须向他表达最真挚的爱❤~~~”
这家伙居然又趁火打劫,你心想,虽然一个bug换一个爱的抱抱也不算很过分,不过……你一边说着“好啊”,一边坏笑着向他靠近了一点。Saeyoung以为你会伸手抱住他,却不想你半路改变了姿势忽然吻住了他的唇……他显然没有想到你会这么主动,你唇边的笑意蔓延开来。(此处省略3000字法式深吻描写)
“707!”你有点恋恋不舍地结束了这个吻,忽然说道。
“什么?”Saeyoung有些疑惑,不明白你为什么忽然叫起了这个名字。
“刚才的吻维持了707帧,足够表达我对God Seven最真挚的爱意了吧?”
“你……你这样可是犯规的……”被揶揄的Saeyoung耳根有些发红,嘟着嘴却完全没有生气的样子。
“所以请God Seven明示我等凡人的过错!”你赶紧乘胜追击。
“啊,那个……那个……就是……”Saeyoung的脑子显然还是有些发堵,转过头盯着屏幕好一会儿才想起自己想说什么:“就是格式转换的问题啦。”
你给Saeyoung送去一个疑惑的眼神,他又继续解释道:“你看这里你用yolo做object detection的时候,输入的是PIL的图像格式,但是后面做movement tracking的时候要用到的模板匹配要求的是opencv的图像格式。”
“所以你看这里和这里,我不是做了格式转换嘛?”不等Saeyoung你就急着打断他。
“我的小傻瓜,光用fromarray和asarray转换可不行啊。”他有些宠溺地捏了捏你的脸又继续说道,“PIL的图像的色彩模式是RGB但是opencv的图像色彩模式是BGR,所以除了数组之外还要做色彩模式的转换才行。按照你的写法你可以打印出中间结果看下,那些图像的色彩都失真了,自然会影响object detection的结果。”Saeyoung一边说一边敲了几个键,把图像的中间结果展示给你看,简直……你不得不说简直是“有理有据,令人信服”。
“所以正确的写法应该是这样,”说着Saeyoung动了动鼠标高亮了两种图像格式转换的语句,分别是——
```
image = Image.fromarray(cv2.cvtColor(cur_img_cv, cv2.COLOR_BGR2RGB)) # transfer OpenCV format to PIL.Image format
```

```
image = cv2.cvtColor(np.asarray(image_canvas), cv2.COLOR_RGB2BGR) # transfer PIL.Image format to OpenCV format
```
“不愧是我的God Seven!这么快就解决了!”你激动地抱住了Saeyoung的胳膊,不过又有些气馁,悻悻地嘟囔了一句:“哎,我果然还是好菜……明明是很简单的问题……”
Saeyoung笑着揉了揉你的头发安慰道:“这是opencv的入门大坑之一,BGR是个历史遗留问题,为了兼容早年的某些硬件才会这样。你没有用过,不知道也很正常啦~再说God Seven存在的价值不就是帮你把这些坑填平了嘛~”
“God Seven存在的价值才不是这样……”你看着有些疑惑的Saeyoung又缓缓说道,“God Seven存在的价值当然是被我喜欢啦~”
“嗷呜!不要突然一本正经说这样的话啊!就算是伟大的God Seven在听到自己的女朋友说这样的话的时候,心脏也会受不了的!”Saeyoung做出了非常夸张的表情,但是眼角的笑意却怎么也遮不住。你俩笑着大闹了一阵,忽然——
“咕噜咕噜……”
“哈哈哈,你饿的肚子都叫了……”
“明明是你的肚子在叫!”
“才不是……唔,我们去吃好吃的吧!”
“好❤~”

(最后贴一张实验结果→_→视频来源确……确实是韩国的大学啊_(:з」∠)_)



  22 5
评论(5)
热度(22)

© 兮嘉 | Powered by LOFTER