建设手机银行网站,市场营销计划,wordpress素锦,在线教育网站开发1、python代码实现图片分割成九宫格
需要包含的库#xff0c;没有下载安装的#xff0c;需要自己安装哦。
实现原理很简单#xff0c;就是用PIL库不断画小区域#xff0c;切下来存储成新的小图片。
假设每一个格子的宽和高分别是w、h#xff0c;那么第row行#xff08…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), colorwhite) #如果原图宽大于高则填充图片的竖直维度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,(j1)*colWidth,(i1)*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
#includeopencv2/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;
}③、运行结果 最后
以上就是这篇文章分享的所有内容了看到的小伙伴如果觉得有用记得收藏哦防止下次走丢。