当前位置: 首页 > news >正文

建设厅里网站查不到外地施工单位软件app开发公司海报

建设厅里网站查不到外地施工单位,软件app开发公司海报,微信代码生成器,工业设计专业大学排名写在前面近期好多网友私信我#xff0c;问我编程该怎么学习、怎么入门。我觉得编程学习#xff0c;就像写文章一样#xff0c;需要积累。如果把代码每个字符拆开#xff0c;大伙都认识#xff0c;但是组合在一起#xff0c;就是另外一回事了。所以我的建议是#xff0c;…写在前面近期好多网友私信我问我编程该怎么学习、怎么入门。我觉得编程学习就像写文章一样需要积累。如果把代码每个字符拆开大伙都认识但是组合在一起就是另外一回事了。所以我的建议是学习编程从项目入手从自己感兴趣的项目入手遇到不懂的语法、算法就去翻阅书、看视频。如果一开始就去看生硬的语法、晦涩的算法就像背单词一样背到第一个单词abandon就放弃了。废话不多说直接上项目这次是一个批量去除水印的项目。环境配置python版本 3.6.0编辑器 pycharmps: 每一步都有代码和排版截图方便学习代码目录结构切记刚开始学习的时候目录结构保持和源码一致第一步导入相关的python包# encoding:utf-8 import os from PIL import Image import numpy as np import imghdrpython包的作用os: 本项目只用到了对文件、文件夹的操作。PIL: Python Imaging Library是Python平台的图像处理标准库。PIL功能非常强大API也非常简单易用。安装命令pip install pillownumpy: (Numerical Python) 是 Python 语言的一个扩展程序库支持大量的维度数组与矩阵运算此外也针对数组运算提供大量的数学函数库。安装命令 pip install numpyimghdr: 是一个用来检测图片类型的模块传递给它的可以是一个文件对象也可以是一个字节流。第二步参数配置类class CONF:input_path input_img # 待处理的图片存放的位置output_path output_img # 去除水印后的图片存放位置level_black 108 # 用于去除水印的特征值level_white 170 # 用于去除水印的特征值is_log True # 是否打印日志信息这里是个人编程的习惯我习惯把一些配置例如文件路径、模型存放路径、模型参数统一放在一个类中。当然实际项目开发的时候是用config 文本文件存放不会直接写在代码里这里为了演示方便就写在一起也方便运行。这块代码放在代码文件的开头也方便查看和修改。第三步类的初始化class DocWipe:def __init__(self, input_path, output_path, level_black, level_white, is_log):self.input_path input_pathself.output_path output_pathself.level_black level_blackself.level_white level_whiteself.is_log is_log 初始化 classmethoddef initialize(cls, config):input_path config.input_pathoutput_path config.output_pathlevel_black config.level_blacklevel_white config.level_whiteis_log config.is_logreturn cls(input_path, output_path, level_black, level_white, is_log)initialize() 函数和 __init__() 函数 是对象初始化和实例化其中包括基本参数的赋值、最后返回用户一个对象。这里作为一个类的基本操作是属于一个通用模板在大多数项目中都可以这么去写。为了养成良好的编程习惯大家可以把这个模板记下来后续直接套用修改部分参数就可以了。第四步 类的主流程函数 主流程 def wipe_process(self,):if os.path.exists(self.input_path) and os.path.isdir(self.output_path):self.visit_dir_files(self.input_path, self.output_path, self.input_path)if self.is_log:print(u完成所有图片已保存至路径 self.output_path)else:print(u待处理的图片存放的位置 %s, 如果没有请新建目录 %s % (self.input_path, self.input_path))print(u去除水印后的图片存放位置 %s, 如果没有请新建目录 %s % (self.output_path, self.output_path))在写代码的时候一定要抓住主线就是代码运行的主流程。因为一个完整可靠的项目它是有很多细枝末节考虑很多步骤是要分模块来写。主流程就是把主心干确定好各个模块的入口确定好。这样开发的时候思路会比较清晰不会被细节吸引住。这里主心干只有个函数 visit_dir_files() 的调用但是它的外围都是一些边界条件的判定不重要但是没有它们程序会出现BUG。第五步图像处理算法 图片处理 def img_deal(self, img_path, save_path):img Image.open(img_path)img self.levels_deal(img, self.level_black, self.level_white)img_res Image.fromarray(img.astype(uint8))if self.is_log:print(u图片[ img_path u]处理完毕)img_res.save(save_path) 图像矩阵处理 def levels_deal(self, img, black, white):if white 255:white 255if black 0:black 0if black white:black white - 2img_array np.array(img, dtypeint)c_rate -(white - black) / 255.0 * 0.05rgb_diff np.maximum(img_array - black, 0)img_array np.around(rgb_diff * c_rate, 0)img_array img_array.astype(int)return img_array在计算机看来彩色图片是三个二维数据分别是R通道、G通道、B通道而灰度图是一个二维数组。数值类型是uint8简单的说就是每个像素点是0~255的数值。去除水印的算法其实就是对每个像素点进行运算为了加快运算速度和代码的整洁度使用了numpy包的矩阵运算。这块的细节理解起来是比较有难度的它涉及了图像处理的算法这块可以先跳过知道它的功能是干嘛的就行。后续有时间再来细细琢磨。第六步 递归访问文件 创建文件夹 def mkdir(self, path):path path.strip().rstrip()is_exists os.path.exists(path)if not is_exists:os.makedirs(path)return Trueelse:return False 递归访问文件/文件夹 def visit_dir_files(self, org_input_dir, org_output_dir, recursion_dir):single_file Falseif os.path.isdir(recursion_dir):dir_list os.listdir(recursion_dir)else:dir_list [recursion_dir]single_file Truefor i in range(0, len(dir_list)):path os.path.join(recursion_dir, dir_list[i])if os.path.isdir(path):self.visit_dir_files(org_input_dir, org_output_dir, path)else:if imghdr.what(path):abs_output_dir org_output_dir recursion_dir[len(org_input_dir):]target_path os.path.join(abs_output_dir, dir_list[i])if single_file:target_path os.path.join(org_output_dir, os.path.basename(dir_list[i]))target_dir_name os.path.dirname(target_path)if not os.path.exists(target_dir_name):self.mkdir(target_dir_name)self.img_deal(path, target_path) 这里也有一个难点递归访问文件/文件夹。递归就是自己调用自己。可以把它当成“分治法”打个比方如果你想解决一个很大的难题直接计算是非常困难的可以把它拆解成多个小问题一个一个来解决。而递归就是起到一个“分治”的作用。它调用的过程就是数据结构里面的“栈”先进后出。我当时开始学习算法的时候递归算法也是研究了一个星期才懂它的原理。所以大家学习的时候不要着急先在纸上模拟调用过程慢慢就会懂了。第七步 主函数入口if __name__ __main__:# 对象初始化doc_wipe DocWipe.initialize(configCONF)# 调用主流程doc_wipe.wipe_process() 至此加上一个main函数去调用所有程序的入口。我们终于完成了。最后测试一下用我之前写的《最近很火的文章自动生成器》来生成随机一篇文章并加上水印。再转成图片作为程序的输入运行结果左边有水印右边是经过python去除了水印注意 仅对浅色的黑白/彩色水印有效如WPS水印课程水印等最后给一点点学习建议不懂的时候先弄明白它的功能以及会使用它让代码先运行起来。等有时间就一个一个细节去攻破它编程和写文章一样需要慢慢积累加油。原文链接https://www.toutiao.com/a6810654859126112772/
http://www.zqtcl.cn/news/354008/

相关文章:

  • 好网站建设公司开发方案联盟营销的网络营销方式
  • logo免费生成网站洛阳网络建站公司
  • 建设工程部网站百度指数功能
  • 个人网站 商业时事新闻2022最新10月
  • 不会代码 怎么做网站网站视频管理系统
  • 网站空间 流量网上卡片制作
  • 网站排名seo软件机关网站源码
  • 网站手机端页面怎么做手机之家
  • 成都电子商务网站大庆城市投资建设网站
  • 电子商务网站费用wordpress 怎么手动更新
  • 中国空间站设计在轨飞行多少年南昌网站建设风格
  • 用php写的网站有哪些暖暖 视频 在线 观看 高清
  • 云空间网站怎么做海南旅游网网页制作
  • 常宁网站免费的ai作图软件
  • 网站建设讲师招聘如何做电商产品推广
  • 让百度收录网站网站开发流程进度表
  • 有几个网站能在百度做推广产品开发管理系统
  • 一个网站项目的价格表dz论坛seo
  • 企业做网站要多少钱哪个网站做动图
  • 知名企业网站例子4s店网站模板
  • 网站建设的信息安全防范技术初级买题做哪个网站好
  • 品牌营销网站建设东莞智通人才招聘网
  • 莒县建设局网站好的网站具备什么条件
  • 威海网站建设怎么样网上怎么推销自己的产品
  • 网站做SEO优化网站建设背景图片大小的修改
  • 看企业网站怎么做到百度秒收WordPress怎么可以上传图片
  • 欧洲手表网站简述jsp网站架构
  • 网站搜索排名优化软件flash xml网站
  • 匀贵网站建设亿级别网站开发注意
  • 怎样架设网站网站优化公司推荐