
Python
喝粥也会胖的唐僧
这个作者很懒,什么都没留下…
展开
-
python压缩pdf文件大小
pdf文件过大,经常会是一个问题,但是市面上基本上都是收费的工具,wps需要开会员才能使用。文件直接小了10倍,打开看也不影响观感,还是比较帮的。原创 2023-08-11 13:56:11 · 4559 阅读 · 5 评论 -
人像美白的python实现
首先得将人像进行皮肤分割,具体最好是使用AI模型,这里就不展开了,本人侧重点是美白算法,所以这里直接使用了一张皮肤分割好的mask图。人像美白在现在的美颜功能里面几乎属于必备的,各家的方案都不太一致,本文主要介绍一种基于肤色分割的人像美白方案。mask图的效果如下图所示,白色区域为皮肤区域,黑色区域为非皮肤区域。我们可以看到,上图的美白效果还是很自然,而且逻辑也非常简单。原创 2023-06-28 19:32:17 · 1861 阅读 · 0 评论 -
Python图像高光调整
【代码】Python图像高光调整。原创 2023-06-26 19:22:00 · 1882 阅读 · 0 评论 -
python实现gimp里面的曝光算法
在gimp里面有曝光的功能。原创 2023-06-25 20:20:38 · 801 阅读 · 0 评论 -
python实现磨皮效果
写的非常棒,我使用python简单的实现了一下,看起来还不错。如果想使用,可以稍微调整一些参数就能达到一个不错的效果了。运行的速度也很快,在pc上面,能到0.15s。原创 2023-06-25 20:09:52 · 777 阅读 · 0 评论 -
使用python来解析lut 3d
不管是作为影视后期还是航拍和各种单反,是离不开lut的,使用lut来进行调色,就是将原图的rgb的数值映射成自己想要的rgb值,这样就能起到调色的作用。于是在网上找了几个图来计算,这里采样的是16,因此就是16*16*16的尺寸,虽然会比较粗糙一些。讲lut 3d比较清楚,基本上就能知道是怎么回事。原创 2023-06-24 20:34:27 · 1333 阅读 · 0 评论 -
使用python实现一个快速高斯模糊算法
基本上和opencv的结果一致,但是速度快了很多,而且可以自定义sigma,这样就可以根据实际情况选择合适的sigma值了。原创 2023-06-21 16:26:37 · 1244 阅读 · 0 评论 -
python实现柔光效果
在很多图像处理的软件有柔光的效果,,这里就很好奇是怎么实现的,于是就看了一些gimp的源码,然后使用python进行复现了一下,这里会稍微有点差距,因为为了省事就直接使用的cv2的高斯模糊,没有想gimp里面直接分x和y方向单独实现高斯模糊,不过效果基本上还是在的,(3)将原图和(2)的结果进行合并。(2)对(1)的图进行高斯模糊。(1)计算锐化和亮度。原创 2023-06-18 11:51:16 · 507 阅读 · 0 评论 -
双线性插值算法原理及其python实现
下面我使用python简单的实现一下resize,这里所说的resize都是放大的resize,因为缩小尺寸根本用不到插值,只需要在原图进行采样即可,所以我这里说的resize是针对放大尺寸来说的。不过需要注意的是,python这样运行分辨率较大时会很慢,可以考虑使用numpy的矩阵运算的方式进行运行或者修改成一些加速库,这里只是展示一些原理学习,并不能直接使用在工程项目里面。具体来说,就是使用先计算出Px1和Px2的数值,然后再计算出来Py1和Py2,最终计算出来P的数值。原创 2023-06-17 17:01:07 · 2791 阅读 · 1 评论 -
opencv祛除高光
原博客是c++,我这边只是使用python进行翻译了一下。原创 2023-06-15 20:09:21 · 2456 阅读 · 3 评论 -
祛除红眼算法python实现
使用python进行了重新复现,这个算法的效果很不错,比起遍地都是的方法(version1)会好一些,version1方法会明显祛除不干净的。我再放大一些可能会更加明显。原创 2023-06-16 18:59:13 · 685 阅读 · 0 评论 -
python中使用字符串进行反射
直接上代码class BigData: def __init__(self,hdfs=None,yarn='yarn'): super(BigData, self).__init__() self.hdfs=hdfs self.yarn=yarn def hive(self): print('use hive to select data') def hbase(self): print('use原创 2021-11-02 20:46:10 · 1611 阅读 · 7 评论 -
利用BeautifulSoup解析并下载文件
!pip install beautifulsoup4from bs4 import BeautifulSoupsoup=BeautifulSoup(open('XXX.html',encoding='utf-8'),features='html.parser')ls=soup.find('div',{'id':'_imageList'}).findAll('img')res=[]for i in ls: #print(i['data-url']) res.append(i[.原创 2021-07-22 20:15:11 · 826 阅读 · 1 评论 -
利用string.Template操作数据结构
直接上代码:import stringa = string.Template('$var1 is $var2')print(eval(a.substitute(var1='1',var2='11')))b = string.Template('$var1 == $var2')print(eval(b.substitute(var1='1',var2='11')))x1,x2=1,1print(eval(a.substitute(var1='x1',var2='x2')))x3,x4=[1原创 2021-07-22 20:09:26 · 447 阅读 · 0 评论 -
@staticmethod的作用
class human(): @staticmethod def eat(x): print('person a eatting %s in night' %x) print(2) human.eat('香蕉')human().eat('西瓜')class human: def eat(x): print('person a eatting %s in night' %x) print(2)human.eat(...原创 2021-07-19 17:53:08 · 551 阅读 · 0 评论 -
针对显存超过某个阈值,自动重启程序
import pynvmlimport timeimport os,signalpynvml.nvmlInit()handle = pynvml.nvmlDeviceGetHandleByIndex(0)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)while True: _used=meminfo.used _total=meminfo.total if _used>_total*0.98: .原创 2021-07-07 16:25:32 · 727 阅读 · 1 评论 -
使用ThreadPool批量处理任务
multiprocessing提供了一个线程池的工具,可以供使用者进行批量处理任务比如下面一个例子,就是使用这个批量打印路径import osimport timeimport tempfileimport pathlibimport shutilfrom multiprocessing.pool import ThreadPool_paths=[str(i)+".jpg" for i in range(1000)]def fast(_p): _pss="/opt/"+_.原创 2021-06-24 15:39:14 · 475 阅读 · 0 评论 -
Failed opening ‘filename‘ (could not find in RIFF header)
运行aubio出错:Failed opening 'filename' (could not find in RIFF header)在GitHub找到解决方式,重新安装即可pip uninstall -yv aubiopip install --force-reinstall --no-cache-dir --verbose aubio原创 2021-06-17 10:27:31 · 731 阅读 · 0 评论 -
使用gdown下载Google drive文件
Google drive的文件我们可以点击下载按钮进行下载,但是要想在命令行使用wget进行下载是不能实现的只能选择使用gdowngdown作为一个Python的工具包,可以使用写代码的方式进行下载,也可以直接敲一行命令搞定,这里为了简单,就敲命令:gdown 需要下载drive的链接,比如:gdown 'https://drive.google.com/uc?id=1H73TfV5gQ9ot7slSed_l-lim9X7pMRiU'然后不出意外就能下载了,使用起来是不是超级简单..原创 2021-05-04 12:46:38 · 30315 阅读 · 4 评论 -
Cannot convert a symbolic Tensor to a numpy array
使用TF进行计算,出现:Traceback (most recent call last): File "infer.py", line 14, in <module> logits = classifier.get_output_for(image, None) File "/opt/stylegan2/dnnlib/tflib/network.py", line 219, in get_output_for expr = tf.zeros([tf.shape(v原创 2021-04-28 18:08:03 · 3445 阅读 · 4 评论 -
Command errored out with exit status 1: python setup.py egg_info Check the logs for full command ou
安装paddlehub出错: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command ou解决方式:更新pip和setuptoolspip install --upgrade pippip install --upgrade setuptools原创 2021-04-28 16:56:19 · 969 阅读 · 0 评论 -
SharedMemory一次性学会
SharedMemory是python3.8新增加的特性,主要使用内存共享,使用非常方便使用文档链接:https://docs.python.org/zh-cn/3/library/multiprocessing.shared_memory.html我们可以先新建一个对象试试:from multiprocessing import shared_memoryshm_a = shared_memory.SharedMemory(create=True, size=10)这个方法新开辟一个空原创 2021-04-26 20:21:46 · 1488 阅读 · 0 评论 -
_validate_lengths‘ from ‘numpy.lib.arraypad
这个问题实际上是因为numpy版本较高导致的有两种解决方法,一个是降低numpy版本低于1.16,比如使用1.15版本的另外一个就是使用新版本里面的替代性的apifrom numpy.lib.arraypad import _validate_lengths修改成:from numpy.lib.arraypad import _as_pairs...原创 2021-04-21 10:45:45 · 634 阅读 · 0 评论 -
Google Cloud Storage使用python批量上传文件
加入我们有如下文件:1.zip2.zip3.zip4.zip5.zip6.zip7.zip8.zip需要将其上传至gcs简单的代码如下:from google.cloud import storagels=[]ls.append('1.zip')ls.append('2.zip')ls.append('3.zip')ls.append('4.zip')ls.append('5.zip')ls.append('6.zip')ls.append(原创 2021-04-13 20:32:20 · 1540 阅读 · 0 评论 -
一文搞懂赋值、浅拷贝和深拷贝之间的区别
背景:经常会有人问你深拷贝浅拷贝之间区别,听过多次,但是仍然不是很清楚到底区别在哪里本文因此做个实验,一文搞懂之间的区别假如有一个list为a,然后拷贝给b我们可以发现构造出一个新的list给了b,就这个例子看起来好像a和b是独立的,虽然实际上不是,后面会看到。我们想要得到一个一模一样的list,还可以使用赋值语句的方式:小结:我们可以看到,实际上赋值语句得到的是同一个list,只是使用变量a和b分别对其进行引用除了使用list()这样的构造的方式可以进行浅拷贝,实际上构造.原创 2021-04-07 18:46:13 · 1127 阅读 · 1 评论 -
使用gunicorn部署flask为并发模式
一般不会直接使用flask进行部署,因为扛不住高并发一般需要wsgi这里我是使用的gunicorn使用之前需要安装gunicornpip install gunicorn然后就可以试一下:root@zl:/opt# gunicorn -husage: gunicorn [OPTIONS] [APP_MODULE]optional arguments: -h, --help show this help message and exit -v,原创 2021-03-24 17:32:48 · 1314 阅读 · 1 评论 -
dll文件使用python和c++调用
dll是Windows上的动态库文件,要想使用Python调用需要使用ctypes库这个测试的dll文件是只定义了一个函数add下面测试一下效果from ctypes import cdll_dll = cdll.LoadLibrary("./dllTest.dll")res = _dll.add(3,2)print(res)运行效果:...原创 2021-02-15 20:53:17 · 893 阅读 · 1 评论 -
使用python批量产生马赛克数据集
import osimport cv2import numpy as np os.makedirs('dataset\\mosaic\\train',exist_ok=True)os.makedirs('dataset\\mosaic\\test',exist_ok=True)locsx=np.random.randint(10,200,100000).tolist()#随机产生x位置locsy=np.random.randint(10,300,100000).tolist()#随机.原创 2021-02-03 15:40:42 · 821 阅读 · 0 评论 -
使用python批量产生水印数据集
这里使用的较为简单的方式,直接使用的是文字作为水印代码如下:import osfrom PIL import Image, ImageDraw, ImageFontimport numpy as np os.makedirs('dataset\\watermarks\\train',exist_ok=True)os.makedirs('dataset\\watermarks\\test',exist_ok=True)locsi=np.random.randint(0,6,100.原创 2021-02-02 16:20:34 · 670 阅读 · 1 评论 -
利用numpy生成指定范围的数据
假如有这样一个需求,生成8个字段,每个字段可指定范围,模拟这样的数据,代码很简单import numpy as npimport pandas as pdlenth=2000size=8#定义每个字段的范围dic={}dic['min1']=1#字段1的最小值dic['max1']=20#字段1的最大值dic['min2']=1dic['max2']=20dic['min3']=1dic['max3']=20dic['min4']=1dic['max4']=20dic原创 2020-12-22 22:04:00 · 3006 阅读 · 0 评论 -
绘制后台执行训练模型的图
如果没有使用tensor board这样的可视化训练模型的框架,但是还是想要知道训练的过程中指标的状态下面这个代码演示的是,gan的后台训练的可视化代码,因为我们直接使用nohup执行,而未指定名称,默认追加的日志文件名为nohup.out思路十分简单,使用正则去匹配相对于的数据,然后进行绘制具体代码如下:import reimport matplotlib.pyplot as plt#read log data_data = open('nohup.out').read()#g原创 2020-12-22 21:56:43 · 396 阅读 · 0 评论 -
使用百度AI开放平台处理数据集
手里一堆人脸数据集需要处理,总不能手动,太费事了于是使用一下百度的AI开放平台,地址如下:https://cloud.baidu.com/product/face使用起来非常简单,首先需要平台创建应用,此时就会有AK和SK这个用于获取token,有了token就可以直接请求了获取token的代码:注意填上做自己的AK和SK # encoding:utf-8import requests # client_id 为官网获取的AK, client_secret 为官网获.原创 2020-12-17 15:34:46 · 1423 阅读 · 1 评论 -
制作val_list.txt和train_list.txt
语意分割如果只有数据集(只有图片),没有val_list.txt等文件,可参考如下代码:##制作label listimport osimport pandas as pdfrom sklearn.model_selection import train_test_splitDATAPATH='/home/aistudio/work/dataset/'lab_train_lists=os.listdir(DATAPATH+'lab_train')lab_train_lists.sor原创 2020-11-01 21:49:31 · 2468 阅读 · 0 评论 -
爱上python系列------数据集(一):数据集获取api:cbsodata
cbsodata是荷兰统计局的数据开放的数据获取的api平时研究数据科学的时候,都是自己去下载数据集,而cbsodata可以使用api获取i数据使用之前需要安装:pip install cbsodata当然conda安装也是可以的:conda install cbsodata使用案例:import pandas as pdimport cbsodata as cbname='81251ned'df=pd.DataFrame(cb.get_data(name))p.原创 2020-10-31 17:21:45 · 708 阅读 · 0 评论 -
conda 一行命令安装R
想在jupyter里面使用R很简单,只需要一行命令就可以:conda install r-essentials安装成功后,就可以jupyter里面写R代码了原创 2020-10-31 12:56:17 · 2229 阅读 · 0 评论 -
在jupyter里面写sql
jupyter给人的感觉就是IPython的网页版IPython是自带很多魔法函数的,比如%run反正带%的都是魔法函数不过对于sql的使用,没有自带魔法函数,想使用,之前 就得安装:!pip install ipython-sql安装后需要导入外部库进来%load_ext sql接下来 就可以使用sql了不过,使用之前肯定需要连接sql数据库%sql mysql+pymysql://sql用户名:密码@IP/库名%sql+命令 ------这个命令理解成执行.原创 2020-10-29 17:47:35 · 4339 阅读 · 2 评论 -
爱上python系列------python性能(十三):忌用for循环
一直都在想标量和向量计算为啥速度不一样,直到看到这个文章接下来试验一下:用for循环:import numpy as npls=[i+8 for i in range(1<<25)]arrs=np.array(ls)#定义一个对每个元素都加8的函数def add_8(nums): for i in range(len(nums)): nums[i]+=8 return nums%timeit add_8(arrs)结果:9.1 s原创 2020-10-28 18:44:18 · 659 阅读 · 0 评论 -
爱上python系列------python性能(十二):pd.eval()加速实验证明无效
pd.eval()号称是使用了Numexpr,能够使用DataFrame之间的运算提速我亲自实验,说明现有的pandas版本的根本不支持,只适用于老版本的pandaspandas版本和Numexpr都是最新的pd.eval()支持的运算比较多,如四则运算、比较运算、位运算等这里首先来验证四则运算里面加法运算:(1)加法实验1:import numexprimport numpy as npimport pandas as pddf1=pd.DataFrame([int(n原创 2020-10-27 18:36:30 · 950 阅读 · 0 评论 -
爱上python系列------python性能(十一):numexpr比numpy更加高速
在python数据领域处理数据使用numpy越来越多了,因为numpy相对来说是很快的,不过当 数据量较大时numexpr会更快比如先做实验试试:先准备数据:import numexprimport numpy as npls1=np.array([int(np.random.rand()*100) for i in range(1<<25)])ls2=np.array([int(np.random.rand()*100) for i in range(1<<2原创 2020-10-27 17:21:04 · 850 阅读 · 1 评论 -
python根据一个list的index获取list
假如能够获得某list的某一堆的index,存在list里面list不支持这样查询:ls=[1,2,3,4,5,6,7,8,9,0]ls[2,3,6]##或者ls=[1,2,3,4,5,6,7,8,9,0]ls[[2,3,6]]都会报错:TypeError: list indices must be integers or slices, not tuple正确的方式其实也很简单:ls=[1,2,3,4,5,6,7,8,9,0]#listindex=[2,3,6]#i原创 2020-10-27 12:59:50 · 11580 阅读 · 2 评论