2021年4月18日星期日

指定目录的图片2值化

```python

# -*- coding: utf-8 -*-

"""指定目录的图片,自适应2值化

"""

import os

from PIL import Image

import numpy as np

import glob



def avgGray(img):

    """计算灰度图像平均灰度值,方差"""

    im_gray1 = np.array(img)

    avg_gray = np.average(im_gray1)

    return np.round(avg_gray, 0), np.round(np.std(img), 0)



def maxMinGray(img):

    """计算灰度图像最大、最小灰度值"""

    im_gray1 = np.array(img)

    return np.round(np.max(im_gray1), 0), np.round(np.min(im_gray1), 0)



def translate(filename="test.jpg", saveToPath="/tmp"):

    """将图片保存为二值"""

    img = Image.open(filename)


    # 模式L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。

    Img = img.convert('L')

    # 保存灰度图

    #  Img.save(os.path.join(saveToPath, "tmpqwerty.jpg"))


    # 自定义灰度界限,大于这个值为黑色,小于这个值为白色

    threshold = 150

    # 灰度平均值,方差

    avggray, std = avgGray(img)

    #  threshold = avgGray(img) * 1.3

    threshold = avggray - 2 * std if avggray > 127 else avggray + 2 * std

    #  threshold = avggray - 1 * std if avggray > 127 else avggray + 1 * std

    #  threshold = avggray - 2.5 * std if avggray > 127 else avggray + 2.5 * std

    print(f"灰度平均值,方差:{avgGray(img)},灰度界限:{threshold} ;最大、最小灰度值:{maxMinGray(img)}")


    table = []

    for i in range(256):

        if i < threshold:

            table.append(0)

        else:

            table.append(1)


    # 图片二值化

    photo = Img.point(table, '1')

    saveToFile = os.path.join(saveToPath, os.path.basename(filename))

    print(f"save to file : {saveToFile}")

    photo.save(saveToFile)



def main():

    image_list = []

    for filename in glob.glob(os.path.join(picpath, '*.jpg')):  # assuming jpg

        #  im=Image.open(filename)

        image_list.append(filename)

    for i in range(len(image_list)):

        translate(image_list[i])



if __name__ == "__main__":

    # 需要处理的图片路径;

    picpath = "/dev/shm/temp/"

    main()

```

2017年8月11日星期五

Linksys WRT1900AC 路由器双线(Dual Wan)/多线(Multi Wan)设置教程



WRT1900AC 刷了openwrt以后,修改vlan配置就可以实现多wan了,下图是刚琢磨出来的网口结构(Layer)图,刷完openwrt以后默认就是这个样子了。。。
vlan1是lan,vlan2是wan,port5为cpu也就是eth0,port6为eth1,与eth0相连的是lan,与eth1相连的是wan,port0..3分别对应路由器外壳印刷的4..1,port4对应路由器外壳印刷的Internet。
20150627,研究一天以后发现无论怎么划分vlan,都无法实现dual wan,因为分来分去都是在eth0.x里面,而不是eth1.x,最多只能将某个lan port转换为wan port,但是无法和wan口同时使用。。。而我的tplink wdr4310一下就设置好了。。。
图片1
20150628,在op论坛发了个求助帖子,最后在leitec网友的帮助下终于搞定vlan设置,实现了双线双wan接入设置:
修改 /etc/config/network 为:
之前就是少了个t也就是tag,所以导致失败。
现在两个WAN都可以从上级获得IP了。
WAN
eth1
Uptime: 0h 9m 53s
MAC-Address: 00:00:00:00:00:00
RX: 96.56 MB (74235 Pkts.)
TX: 4.90 MB (43022 Pkts.)
IPv4: 192.168.1.2/24
WAN2
eth1.3
Uptime: 0h 9m 58s
MAC-Address: 00:00:00:00:00:00
RX: 1.68 KB (17 Pkts.)
TX: 8.81 KB (96 Pkts.)
IPv4: 192.168.8.138/24
1.电信联通下载带宽可以叠加。(360测速。。。)
2.故障转移,如果电信挂了,国内外可以走联通,联通挂了,国内走电信,国外断。(luci界面手动断开其中一个网络)
3.正常双线接入情况下国内走电信,国外走联通转vps,dns查询默认优先走的是电信(设成只走联通好像也没用。。。)
/etc/config/mwan3修改为:

指定目录的图片2值化

```python # -*- coding: utf-8 -*- """指定目录的图片,自适应2值化 """ import os from PIL import Image import numpy as np imp...