最近需要制作可视化的展示,有些场景图像没有对应的事件可视化图像,于是写了一个代码,可以将彩色图像转成事件相机里面事件累积的图像。从测试来看效果还可以。
做法就是把图像转成灰度图之后,看图像偏移位置的像素值之间的差,如果达到阈值10,那么就记录数据。
下面是代码:
import numpy as np
import os
import sys
import cv2
image_path = "utils\\00000.jpg"
gray_img=cv2.imread(image_path)
gray_img=cv2.cvtColor(gray_img,cv2.COLOR_BGR2GRAY)
print(gray_img.shape)
print(gray_img)
# 偏移方向 建议设置区间[-5,5]
xshift = 3
yshift = -3
xlong = gray_img.shape[1]-2*abs(xshift)
ylong = gray_img.shape[0]-2*abs(yshift)
pic_shape = [ylong,xlong,3]
print(pic_shape)
img = np.full(pic_shape, 0, dtype=np.uint8)
for i in range(abs(yshift),ylong):
for j in range(abs(xshift),xlong):
if int(gray_img[i+yshift][j+xshift])-int(gray_img[i][j])>10:
img[i][j]=[0,255,0]
if int(gray_img[i+yshift][j+xshift])-int(gray_img[i][j])<-10:
img[i][j]=[0,0,255]
cv2.imshow("image", img)
cv2.waitKey(0)
结果展示:
输入图像:
输出图像:
事件图像:
可以看出来和真实事件图像基本上是一样的,不过就是真实事件图像因为环境原因噪点会更多一些。