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

网站到期请续费济南传承网络李聪

网站到期请续费,济南传承网络李聪,响应式网站建设对企业营销,网站全局搜索如何做文章目录 概要通用配置不考虑间隔代码实现考虑间隔代码实现小结 概要 概要#xff1a; 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时#xff0c;可以考虑不同的模式#xff0c;包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时可以考虑不同的模式包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔忽略不能整除部分 相邻正方形之间没有间隔同时高度不能整除的部分直接被忽略。 示例图中展示了正方形紧密排列没有任何间隔不整除的部分被舍弃。 不考虑间隔对不能整除部分进行空白填充 相邻正方形之间没有间隔同时对高度不能整除的部分进行白色填充。 示例图中呈现了正方形之间无缝连接高度不能整除的部分填充为白色。 考虑间隔忽略不能整除部分 相邻正方形之间存在间隙间隔距离为3像素同时高度不能整除的部分直接被忽略。 示例图中显示了正方形之间的间隔不整除的部分被舍弃。 考虑间隔对不能整除部分进行空白填充 相邻正方形之间存在间隙间隔距离为3像素同时对高度不能整除的部分进行白色填充。 示例图中演示了正方形之间的间隔高度不能整除的部分填充为白色。 通用配置 为了统一上述代码,我们设置通用配置项如下: config {cell_num:7,whether_crop_image_height: True,whether_with_gap: True,gap_width:3 }上述配置中,各项含义如下: cell_num: 表示每行划分格子个数 whether_crop_image_height: 表示是否对高度不能整除部分进行空白填充 whether_with_gap: 表示相邻正方形之间是否存在间隔 gap_width: 表示相邻正方形间间隔的大小 不考虑间隔代码实现 1). 获取每行格子数目和输入图像信息 w_count config[cell_num] src_height img.shape[0] src_width img.shape[1]2).计算每个格子的长度以及结果图像的宽度 sub_length int(src_width / w_count) new_width sub_length * w_count3).根据是否需要对高度进行空白填充,计算结果图像的高度 if config[whether_crop_image_height]:h_count int(src_height / sub_length) else:h_count math.ceil(src_height / sub_length) new_height sub_length * h_count4).对结果图进行赋值 img_t np.zeros(shape(new_height,new_width,3),dtypenp.uint8) 255 if config[whether_crop_image_height]:img_t img[:new_height,:new_width,:] else:img_t[:src_height, :new_width, :] img[:src_height, :new_width, :]5).画格子 for x_i in range(1, w_count):cv2.line(img_t,(x_i*sub_length,0),(x_i*sub_length,new_height-1),color(205,205,74),thickness1) for y_i in range(1, h_count):cv2.line(img_t,(0,y_i*sub_length),(new_width-1,y_i*sub_length), color(205,205,74), thickness1)完整代码 import cv2 import numpy as np import math# 通用配置 config {cell_num: 7,whether_crop_image_height: True,whether_with_gap: False,gap_width: 0 }# 读取图像 img cv2.imread(img.png)# 获取每行格子数目和输入图像信息 w_count config[cell_num] src_height img.shape[0] src_width img.shape[1]# 计算每个格子的长度以及结果图像的宽度 sub_length int(src_width / w_count) new_width sub_length * w_count# 根据是否需要对高度进行空白填充计算结果图像的高度 if config[whether_crop_image_height]:h_count int(src_height / sub_length) else:h_count math.ceil(src_height / sub_length) new_height sub_length * h_count# 对结果图进行赋值 img_t np.zeros(shape(new_height, new_width, 3), dtypenp.uint8) 255 if config[whether_crop_image_height]:img_t img[:new_height, :new_width, :] else:img_t[:src_height, :new_width, :] img[:src_height, :new_width, :]# 画格子 for x_i in range(1, w_count):cv2.line(img_t, (x_i * sub_length, 0), (x_i * sub_length, new_height-1), color(205, 205, 74), thickness1) for y_i in range(1, h_count):cv2.line(img_t, (0, y_i * sub_length), (new_width-1, y_i * sub_length), color(205, 205, 74), thickness1)# 展示生成的拼图效果 cv2.imshow(Mosaic Effect, img_t) cv2.waitKey(0) cv2.destroyAllWindows() 带填充的结果 import cv2 import numpy as np import math# 通用配置 config {cell_num: 7,whether_crop_image_height: True,whether_with_gap: False,gap_width: 0 }# 读取图像 img cv2.imread(img.png)# 获取每行格子数目和输入图像信息 w_count config[cell_num] src_height img.shape[0] src_width img.shape[1]# 计算每个格子的长度、间隔长度以及结果图像的宽度 sub_length int(src_width / w_count) gap_length int(config[gap_width]) new_width sub_length * w_count gap_length * (w_count - 1)# 根据是否需要对高度进行空白填充计算结果图像的高度 if config[whether_crop_image_height]:h_count int((src_height gap_length) / (sub_length gap_length)) else:h_count math.ceil((src_height gap_length) / (sub_length gap_length)) new_height sub_length * h_count gap_length * (h_count - 1)# 对结果图进行赋值 img_t np.zeros(shape(new_height, new_width, 3), dtypenp.uint8) 255 if config[whether_crop_image_height]:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yimg_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :] else:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yif i h_count - 1:img_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :]else:diff_height src_height - sub_length * (h_count - 1)img_t[src_y:src_y diff_height, src_x:src_x sub_length, :] img[begin_y:begin_y diff_height, begin_x:begin_x sub_length, :]# 展示生成的拼图效果 cv2.imshow(Mosaic Effect with Fill, img_t) cv2.waitKey(0) cv2.destroyAllWindows() 不考虑间隔带填充的情况img_t np.zeros(shape(new_height, new_width, 3), dtypenp.uint8) 255 if config[whether_crop_image_height]:img_t img[:new_height, :new_width, :] else:img_t[:src_height, :new_width, :] img[:src_height, :new_width, :]考虑间隔带填充的情况img_t np.zeros(shape(new_height, new_width, 3), dtypenp.uint8) 255 if config[whether_crop_image_height]:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yimg_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :] else:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yif i h_count - 1:img_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :]else:diff_height src_height - sub_length * (h_count - 1)img_t[src_y:src_y diff_height, src_x:src_x sub_length, :] img[begin_y:begin_y diff_height, begin_x:begin_x sub_length, :]在带填充的情况下会对不能整除的高度部分进行空白填充。带填充的拼图效果会更整齐而不带填充的情况下可能会有一些截断。 考虑间隔代码实现 1). 获取每行格子数目和输入图像信息 w_count config[cell_num] src_height img.shape[0] src_width img.shape[1]2).计算每个格子的长度,间隔长度以及结果图像的宽度 sub_length int(src_width / w_count) gap_length int(config[gap_width]) new_width sub_length * w_count gap_length * (w_count -1)3).根据是否需要对高度进行空白填充,计算结果图像的高度 if config[whether_crop_image_height]:h_count int( (src_height gap_length) / (sub_lengthgap_length)) else:h_count math.ceil((src_height gap_length) / (sub_lengthgap_length)) new_height sub_length * h_count gap_length * (h_count-1)4).对结果图进行赋值 img_t np.zeros(shape(new_height,new_width,3),dtypenp.uint8) 255 if config[whether_crop_image_height]:for i in range(h_count): for j in range(w_count): begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yimg_t[src_y:src_ysub_length,src_x:src_x sub_length,:] img[begin_y:begin_y sub_length,begin_x:begin_x sub_length, :] else:for i in range(h_count): for j in range(w_count): begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yif ih_count-1:img_t[src_y:src_ysub_length,src_x:src_x sub_length,:] img[begin_y:begin_y sub_length,begin_x:begin_x sub_length, :]else:diff_height src_height - sub_length * (h_count-1)img_t[src_y:src_y diff_height, src_x:src_x sub_length, :] img[begin_y:begin_y diff_height,begin_x:begin_x sub_length, :]全部代码 import cv2 import numpy as np import math# 通用配置 config {cell_num: 7,whether_crop_image_height: True,whether_with_gap: True,gap_width: 3 }# 读取图像 img cv2.imread(img.png)# 获取每行格子数目和输入图像信息 w_count config[cell_num] src_height img.shape[0] src_width img.shape[1]# 计算每个格子的长度、间隔长度以及结果图像的宽度 sub_length int(src_width / w_count) gap_length int(config[gap_width]) new_width sub_length * w_count gap_length * (w_count - 1)# 根据是否需要对高度进行空白填充计算结果图像的高度 if config[whether_crop_image_height]:h_count int((src_height gap_length) / (sub_length gap_length)) else:h_count math.ceil((src_height gap_length) / (sub_length gap_length)) new_height sub_length * h_count gap_length * (h_count - 1)# 对结果图进行赋值 img_t np.zeros(shape(new_height, new_width, 3), dtypenp.uint8) 255 if config[whether_crop_image_height]:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yimg_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :] else:for i in range(h_count):for j in range(w_count):begin_x sub_length * jbegin_y sub_length * isrc_x gap_length * j begin_xsrc_y gap_length * i begin_yif i h_count - 1:img_t[src_y:src_y sub_length, src_x:src_x sub_length, :] img[begin_y:begin_y sub_length, begin_x:begin_x sub_length, :]else:diff_height src_height - sub_length * (h_count - 1)img_t[src_y:src_y diff_height, src_x:src_x sub_length, :] img[begin_y:begin_y diff_height, begin_x:begin_x sub_length, :]# 绘制间隔 if config[whether_with_gap]:for i in range(h_count):for j in range(w_count - 1):begin_x sub_length * (j 1) gap_length * jbegin_y sub_length * i gap_length * icv2.line(img_t, (begin_x, begin_y), (begin_x, begin_y sub_length), color(205, 205, 74), thickness1)# 展示生成的带填充和间隔的拼图效果 cv2.imshow(Mosaic Effect with Fill and Gap, img_t) cv2.waitKey(0) cv2.destroyAllWindows() 小结 通过使用OpenCV库和Python编程语言实现了图像拼图效果的生成。 拼图效果生成 根据用户的需求实现了两种不同的拼图效果生成方式。 一种是不考虑间隔可以选择是否对高度不能整除的部分进行空白填充另一种是考虑间隔可以选择相邻正方形之间是否存在间隔以及间隔的大小同样可以选择是否对高度不能整除的部分进行空白填充。 通用配置 引入了通用配置项用户可以通过修改配置来调整拼图的格子数、是否裁剪高度、是否考虑间隔以及间隔的宽度等参数。 代码优化 封装了一些功能函数使代码更加模块化和可读性更强。
http://www.yutouwan.com/news/169423/

相关文章:

  • 汕头网站制作专业哪些网站推广公司
  • 文明网站建设情况服装 网站规划方案
  • 免费咨询律师事务所安徽网络关键词优化
  • 适合个人做的网站有哪些建设一个网站需要什么技术
  • 广州建网站哪儿济南兴田德润简介建设类建设机械证官方网站
  • 帮别人做网站被抓网络编程有哪些
  • 佛山美容网站建设青岛网站制作哪里有
  • 公司内部网站系统海南网络科技有限公司
  • 医疗器械软件开发流程宁波网站优化公司推荐
  • 温州网站建设哪里好大连 祥云 网站优化
  • 网站制作优化排名天猫商城买卖
  • 株洲网站排名优化专业的建设企业网站
  • 辽宁城乡住房建设厅网站网站网页
  • 张掖网站制作网址导航类网站如何做推广
  • 搬瓦工做网站稳定吗鹤岗手机网站建设
  • 洛宁网站建设做网站怎么租个空间
  • 如何做好网站推广优化十大电脑必玩大型免费网游
  • 大连网站制作 姚喜运旅游网站代码html
  • 网站功能建设模块iis7 发布静态网站
  • 成都网站建设3六六百度云无法进入wordpress
  • 搜索引擎优化网站的网址网站qq交谈怎么做的
  • 均安网站制作免费网站模板 优帮云
  • 长春做网站搜吉网传媒陕西网站关键词自然排名优化
  • 沈阳专业网站制作百度网站安全在线检测
  • 怎么开通网站和进行网页设计手工活外发
  • 邯郸市教育考试院官网宁波seo推广推荐公司
  • 临沂建设规划局网站菏泽建设局官网
  • 广告网站留电话不用验证码wordpress分享插件积分
  • 有哪些好的网站制作公司网站建设谢辞
  • 网站代理最快最干净怎么制作软件平台