1、python代码实现图片分割成九宫格

需要包含的库,没有下载安装的,需要自己安装哦。

实现原理很简单,就是用PIL库不断画小区域,切下来存储成新的小图片。

假设每一个格子的宽和高分别是w、h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h)。

代码实例:

import tkinter as tk
from PIL import Image,ImageTk
import sys
import tkinter.filedialog
#先将图片填充为正方形
def fill_image(image): width, height = image.size #比较图片的宽和高,选取值较大的作为新图的宽 newImage_width = width if width > height else height #生成正方形图,空白处用白色填充newImage = Image.new(image.mode, (newImage_width, newImage_width), color='white')  #如果原图宽大于高,则填充图片的竖直维度if width > height: newImage.paste(image, (0, int((newImage_width - height) / 2))) else: newImage.paste(image, (int((newImage_width - width) / 2),0)) return newImage
# 切图(切成9张图)
def cut_image(image):width, height = image.sizecolWidth = int(width / 3)   #一行3张image_grid = []for i in range(0,3):for j in range(0,3):row = (j*colWidth,i*colWidth,(j+1)*colWidth,(i+1)*colWidth)image_grid.append(row)image_list = [image.crop(row) for row in image_grid]return image_list

运行结果:

2、C++代码实现图片分割成九宫格(附Opencv配置教程)

①、本示例中用opencv实现,需要配置,具体如下:

OpenCV下载地址:http://opencv.org/downloads.html,根据操作系统选择合适的安装包。本文使用的是isual Studio是VS2015版本。我把OpenCV解压到C:\opencv。

在Windows 10 中添加环境变量
在系统变量的Path变量中添加以下两个路径:

配置VS的目录
打开VS,新建一个C++项目,打开项目属性,配置VC++ 目录属性:

选择“包含目录”,添加OpenCV的include目录的路径:

选择“库目录”,添加OpenVC的lib文件夹的路径:


添加附加依赖项
添加附加依赖项就是添加所有的lib文件的路径,这些lib文件都是在前面那个库目录里面保存的。依次选择“链接器”、“输入”、“附加依赖项”,进入页面,开始添加opencv_worldxxxx.lib文件路径。


注意有两种lib文件,一种带d的是Debug模式,不带d的是Release模式,OpenCV版本不同,前面的序号也不同,需要做相应的修改,两种模式的lib最好不要放一起,否则有可能会导致其中一个模式出问题,Debug模式下使用namewindow函数创建窗口,运行代码会出现两幅图片。

②、代码示例:

#include "stdafx.h"
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;int main()
{Mat src = imread("逃逸的卡路里.png");if (src.empty()){cout << "No Image!" << endl;system("pause");return -1;}//原图宽高int width = src.cols;int height = src.rows;int num = 3;//小方块数量(可实现任意等份分割)//制作九宫格每个小方块宽高int step_x = width / num;int step_y = height / num;//重新resize图片尺寸resize(src, src, Size(step_x * num, step_y * num), 1, 1, INTER_LINEAR);int space = 5; //空白间隔(实现九宫格效果)Mat canvas = Mat(Size(src.cols + space * (num - 1), src.rows + space * (num - 1)), CV_8UC3, Scalar(255, 255, 255)); //画布,用来制作九宫格图片int icount = 0;                                                                                                                    //就图片分成9个小块,将每一小块抠图至画布for (int i = 0; i < num; i++){for (int j = 0; j < num; j++){//小方块相对于原图左上角起点int x = j * step_x;int y = i * step_y;//将小方块抠图至画布。其中,每扣一小块需跳过space空白src(Rect(x, y, step_x, step_y)).copyTo(canvas(Rect(x + space * j, y + space * i, step_x, step_y)));char cpicpath[6];sprintf(cpicpath, "%d.jpg", icount);;imwrite(cpicpath, src(Rect(x, y, step_x, step_y)));   // 保存切割的图片icount++;}}imshow("canvas", canvas);imshow("test", src);waitKey(0);system("pause");return 0;
}

③、运行结果:

最后

以上就是这篇文章分享的所有内容了,看到的小伙伴如果觉得有用,记得收藏哦,防止下次走丢。

python和C++代码实现图片九宫格切图程序(附VS2015配置Opencv教程)相关推荐

  1. iOS storyBoard 和 纯代码 实现 九宫格 切图

    一,在StoryBoard中实现九宫格切图: 1.把图片添加到Assets.xcassets文件夹里 2.选择这个图片 3.点击"Show Slicing" 二,用纯代码实现九宫格 ...

  2. 九宫格切图器(每天一个python小项目)

    首先安装PIL库: import tkinter as tk from PIL import Image,ImageTk import sys import tkinter.filedialog im ...

  3. python切割图片地图切图脚本

    python切割图片地图切图脚本 ''' 读入一个图片,切成指定数目个小图片(64个) 文件夹名out ''' from PIL import Image import sys,os cut_num ...

  4. 用canvas实现九宫格切图之手把手教学(uniapp+ts)

    uniapp用canvas实现九宫格切图(typescript) 前言 上传图片 展示图片 画布 下载图片 最终效果 总结 前言 这几天工作比较轻松,所以就有时间发下呆,突然想起前段时间用了一个九宫格 ...

  5. Django实现微信小程序九宫格切图后端(第九周学习记录)

    第九周学习记录 上周第八周确实没有发布我的学习记录,因为服务器的原因项目也一直延迟,好在周日老师的服务器批下来,小伙伴也开始了快乐windows服务器配置,我自然也不能闲着,这周开始赶进度 一.小程序 ...

  6. Unity的UGUI用TexturePacker全自动打图集,包括九宫格切图信息

    Unity的UGUI用TexturePacker全自动打图集,包括九宫格切图信息 前言 环境准备 实现过程 注意 总结 版权声明 前言 最近在学习UGUI的打图集,之前一直在用SpritePacker ...

  7. 微信彩色个性昵称 游戏取名 九宫格切图 多图拼接工具箱微信小程序源码

    简介: 流量主系列,没有后台,直接上传小程序就能使用了 这是一款多功能工具箱小程序! 目前由N款小功能组合成 比如: 图片拼接 九宫格切图 透明昵称 文字表情 等等上面说的只是一部分 该款小程序无需服 ...

  8. 怎么制作九宫格切图?这两个方法非常简单

    怎么制作出九宫格切图呢?相信大家在微信朋友圈看到过朋友发的九宫格切图照片,把一张照片切割成九份,然后按照一定的顺序发到朋友圈中,就会形成一个效果非常好的九宫格照片,我们自己也想发这种形式的朋友圈,比较 ...

  9. ui九宫格切图_【九宫切图】什么是九宫绘图,九宫格绘法

    九宫切图在控件美化的时候会经常的用到 比如: 20140630220626_56850.png (3.13 KB, 下载次数: 42) [九宫切图]什么是九宫绘图,九宫格绘法 2014-7-21 11 ...

最新文章

  1. HR最常用的Excel技巧,职场必备,值得收藏转发!
  2. 基础篇:事件的发送和处理
  3. C#高级技师语法,你会吗?
  4. PHP笔记-表格及分页功能
  5. 关于PHP会话:session和cookie
  6. 天锦十字绣:网购退货催生退货运费险
  7. python处理json数据(复杂的json转化成嵌套字典并处理)
  8. uniapp仿京东地址选择插件
  9. 基恩士PLC④--MAIN程序实例笔记
  10. 什么是微信公众平台?
  11. SRS 流媒体服务器对http-flv流进行配置
  12. AI视觉对抗之隐身T恤「AI前沿」
  13. CCAI 2017 | 澳大利亚新南威尔士大学教授 Toby Walsh 将带来精彩演讲
  14. ORACLE存储过程中sleep的使用
  15. python文本去重复_python多个文本组合后去除重复项
  16. 【px4编译】make px4fmu-v3_default upload 不能使用
  17. Hieroglyph3 框架分析2
  18. 蓝牙map协议源码解析
  19. 商用密码应用与安全性评估之(二)商用密码管理法律法规
  20. android实现打电话功能,Android之简单实现拨打电话功能的方法

热门文章

  1. 如何撰写好的科研论文:摘要(1)
  2. 还在为搞不懂笔记本电脑参数而苦恼么?一篇文章就够啦
  3. Linux系统vim命令的一些体验
  4. Java获取微信access_token
  5. 堡垒前线辅助游戏错误操作 常见错误介绍
  6. 如何选择一个适合自己并且有前景的职业?
  7. 论文实用技巧(一):Word常用快捷键
  8. 画论37 文徵明《文待诏论画》
  9. 如何消除html的空白页,word中多余的空白页怎么删除?
  10. labview 判断整数_labview 之如何获取数据类型的取值范围