MISC-交通繁忙

admin 2022年1月5日23:10:52评论56 views字数 1165阅读3分53秒阅读模式

>

>

MISC-交通繁忙

yuchoxuuan

下载之后是一个傻大的gif ,拖进ps发现有很多很多很多很多
MISC-交通繁忙
大体上看了一下,大概是 红绿灯闪烁,间或黄灯一闪, 疑似用三盏灯表示三种不同的信号状态
不过因为帧数太多了,所以实在懒得一个一个的数,所以,先记下来三盏灯的位置中心位置
MISC-交通繁忙
MISC-交通繁忙

大概是 x = 111 y = 47 96 145 的样子
然后写个简单的脚本跑一下,我代码水平不行,效率低了些,不过大体够用吧
因为复用了以前的一个陈年类,所以多了一步 Image 转 cv 的过程,如果纯为了这个题目那就是白痴了
这么写纯粹是为了将就我以前的代码。。。


class PicBits:
    img = None
    fn = ''
    def getxy(self, x=0,y=0):
        ret = [0,0,0]
        height = self.img.shape[0]
        weight = self.img.shape[1]
        channels = self.img.shape[2]
        if x < 0 : x = -x
        if y < 0 : y = -y 
        ret =[]
        for c in range(channels):
            ret.append(self.img[y%height,x%weight,c])
        return ret
    @staticmethod 
    def gif2bl(fn=''):
        rtl=[]
        im = Image.open(fn)
        print("FrameCont:",im.n_frames )
        for i in range(im.n_frames):
            im.seek(i)
            CF=Image.new("RGBA",im.size)
            CF.paste(im)
            img = cv.cvtColor(np.asarray(CF),cv.COLOR_RGB2BGR)
            nb = PicBits()
            nb.img=img
            nb.fn='Tmp'
            rtl.append(nb)
        return rtl

fn ="D:\\ciq\\Traffic_Light.gif.gif"
x = 111
y =[47,96,145]
o =['1',' ','0']
l= PicBits.gif2bl(fn)
for i in l:
    for j in range(len(y)):
        col = i.getxy(x,y[j])
        dx = abs( col[0]-172) + abs(col[1]-172) + abs(col[2]-172)
        dx2 = abs( col[0]-254) + abs(col[1]-254) + abs(col[2]-254)
        if dx > 100 and dx2 >100 : 
            print(o[j],end= '')

跑完之后发现是很整齐的二进制码,所以直接转一下就出来了。
这里面有一行的存在
dx2 = abs( col[0]-254) + abs(col[1]-254) + abs(col[2]-254)

是因为群主为了让大家看得清,所以在灯光闪烁间查了一些全灰的帧进去,这行代码是为了把那些帧丢掉

简单粗暴,出题人很厚道。


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:10:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MISC-交通繁忙http://cn-sec.com/archives/720027.html

发表评论

匿名网友 填写信息