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

article/2025/9/28 2:36:35

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;
}

③、运行结果:

在这里插入图片描述

最后

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


http://chatgpt.dhexx.cn/article/KgNqFJxX.shtml

相关文章

android九宫格切图,拼图九宫格切图app

拼图九宫格切图app是一款比较不错的手机九宫格照片编辑拼图软件&#xff0c;任意选择需要切割的图片&#xff0c;切割成九宫格拼图&#xff0c;轻松制作&#xff0c;喜欢发朋友圈的朋友们有福了&#xff0c;还可以自定义美化滤镜选择&#xff0c;添加文字&#xff0c;贴纸等&am…

赛效:电脑在线九宫格切图怎么制作?

九宫格切图的好处是提高作品的美观度&#xff0c;九宫格切图可以将原本散乱的图片元素进行有序的排列&#xff0c;使作品更具美感&#xff0c;提高观众的观赏体验。另外&#xff0c;还能增强作品的可读性&#xff0c;九宫格切图可以将作品中的主体与背景进行分离&#xff0c;使…

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

uniapp用canvas实现九宫格切图&#xff08;typescript&#xff09; 前言上传图片展示图片画布下载图片最终效果总结 前言 这几天工作比较轻松&#xff0c;所以就有时间发下呆&#xff0c;突然想起前段时间用了一个九宫格切图软件&#xff0c;所以就自己试着开发下&#xff0c;…

PS把图片切成九宫格

目录 PS把图片切成九宫格第一步&#xff0c;导入图片到PS第二步&#xff0c;设置裁剪第三步&#xff0c;导出第四步&#xff0c;效果图 PS把图片切成九宫格 PS把图片切成九宫格,把图片设置切片&#xff0c;不仅可以切成九宫格&#xff0c;也可以设置22&#xff0c;44&#xff0…

九宫格图片怎么操作?这里有你想要的方法

不知道平时小伙伴们在发朋友圈的时候有没有注意过很多人的朋友圈都会将很多图片拼起来&#xff0c;凑成九宫格图片来发送。这是因为朋友圈的限制&#xff0c;无法一次发完&#xff0c;每次最大上传只有9长照片。所以就有很多朋友一次拼齐9个图片在一起实现发布更多的图片&#…

html用九张图片做出九宫图,九宫切图软件 如何快速把照片做成九宫格切图

在微博时尚流行的图片展示上&#xff0c;九宫切图是当下最流行的一种&#xff0c;一张非常普通的照片经过了九宫切图软件的处理&#xff0c;变成非常漂亮的九宫图片&#xff0c;是不是美观大大提升了。尤其是在把自己自拍的照片做成九宫图展示&#xff0c;让人更有一种不一样的…

九宫格拼图怎么拼?分享两个简单的操作

日常生活中发朋友圈的时候&#xff0c;小伙伴是不是有很多照片想分享到朋友圈呢&#xff1f;但是因为朋友圈的限制&#xff0c;不能一次全发。有很多朋友发现很多朋友可以把一张图片剪成9格&#xff01;看起来很棒&#xff0c;那九宫格拼图怎么拼的呢&#xff1f;今天就和大家分…

unity的九宫格切割

我们新建Button&#xff0c;然后我们需要一张图片 修改图片类型如下&#xff1a; Editor GUI and Lagacy GUI适用于ngui&#xff0c;而Sprite适用于ngui 然后点击Sprite Editor&#xff0c;如果首次操作会报错&#xff0c;请按如下操作&#xff1a; 点击Package Manager-》将…

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

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

matting之trimap生成_膨胀腐蚀

在抠图技术中三分图&#xff08;trimap)经常被用到&#xff0c;通常使用的方法是膨胀腐蚀(一般在去除噪声的时候先腐蚀再膨胀)。 1. import os import numpy as np import cv2def random_dilate(alpha, low1, high5, modeconstant):"""Dilation. erode"&…

抠图算法-Alpha Matting

目录 概述graph cutAlpha Matting 概述 对于抠图&#xff0c;比较简单的方法是图像分割&#xff0c;这是很老的方法&#xff0c;但这其实算不上真正意义的抠图&#xff0c;因为他的主要目的是用于图像之间块与块的分割。典型的就是grabcut算法&#xff0c;opencv上面有相应的优…

Background Matting V2 学习

论文&#xff1a; [2012.07810] Real-Time High-Resolution Background Matting (arxiv.org) GitHub项目源码&#xff1a;GitHub - PeterL1n/BackgroundMattingV2: Real-Time High-Resolution Background Matting 目录 论文学习 方法设计&#xff1a; 网络模型&#xff1a; 训…

matting系列论文笔记(三):Boosting Semantic Human Matting with Coarse Annotations

matting系列论文笔记&#xff08;三&#xff09;&#xff1a;Boosting Semantic Human Matting with Coarse Annotations 论文链接: CVPR2020 Boosting Semantic Human Matting with Coarse Annotations [1] 代码&#xff1a;暂无 文章目录 matting系列论文笔记&#xff08;三…

Image Matting 图像抠图技术与深度学习抠图

Image Matting: 图像抠图技术是指从静态图像或者视频序列中抽取感兴趣目标的过程&#xff0c;在ps和视频编辑中有重要的应用。 1.Image Matting Matting 技术可以表示为下面的图&#xff0c;与语义分割不同&#xff0c;它可以针对感兴趣前景物体进行细节处理、包括细微的毛发和…

论文阅读——Deep Image Matting

一、摘要 强调image matting&#xff08;抠图&#xff09;的现实意义。已有的算法在前景和背景颜色相似或者拥有复杂的纹理时表现较差&#xff0c;主要原因有两个&#xff0c;一个是只运用到低维特征&#xff0c;另一个是缺少高维语境。所以这篇论文提出了深度模型算法可以解决…

【CVPR2022】Boosting Robustness of Image Matting with Context Assembling and Strong Data Augmentation

Boosting Robustness of Image Matting with Context Assembling and Strong Data Augmentation 中文题目 利用上下文组合和强数据增强的增强鲁棒图像抠图 paper&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Dai_Boosting_Robustness_of_Image_Mattin…

图像抠图Image Matting算法调研

目录 1.Trimap和Strokes 2. 相关数据集 3.论文算法调研 3.1 Deep Image Matting 3.2 Semantic Image Matting 3.3 Background Matting 3.4 Background Matting V2 3.5 Semantic Human Matting 3.6 HAttMatting 3.7 MMNet&#xff1a;Towards Real-Time Automatic Por…

抠图技术及方法简介(Image Matting Overview)

之前接触过语义分割&#xff0c;所以在刚接触图像抠图时以为两者是差不多。语义分割是端到端的&#xff0c;对像素按照语义进行多分类&#xff0c;而抠图就是按照前景和背景进行二分类嘛&#xff1f;实际上这是错误的理解。语义分割重在对每个像素的语义理解&#xff0c;将相同…

Portrait Matting

文章作者为 Google Research 的软件工程师 Sergio Orts Escolano 和 Jana Ehman&#xff0c;文章发表于 2022 年 1 月 24 日。 Portrait Matting 网络 抠图是提取精确的 alpha 遮罩的过程&#xff0c;抠图假设图像是前景和背景图像的合成&#xff0c;因此每个像素的强度是前景…

Background Matting详解

转自&#xff1a;https://zhuanlan.zhihu.com/p/148265115?from_voters_pagetruehttps://www.aiuai.cn/aifarm1462.html 使用人工智能技术实现类似PhotoShop等工具的抠图功能是一个非常有趣且有科研前景的一个方向。和分割算法只有 和 两个值相比&#xff0c;抠图得到的边缘…