不同颜色的九宫图matlab,实现九宫格图片朋友圈,原来如此简单

看到朋友圈中发九宫格的朋友圈,感觉很炫酷,自己也想去弄一下,可是又懒得下各种工具,又懒得手动裁剪。没办法只好自己动手,使用Python写一套逻辑进行自动裁剪。废话不多说,请看正文:

安装依赖

pip3 install pillow

完整代码

import os

from PIL import Image

class ImageCrop(object):

def __init__(self, img_path):

"""

初始化

:param img_path: 要切割的图片

"""

self.img_path = img_path

def crop(self):

"""

切割

:return:

"""

im = Image.open(self.img_path)

width, height = im.size

w = width / 3

h = height / 3

for y in range(3):

for x in range(3):

image = im.crop(box=(x * w, y * h, (x + 1) * w, (y + 1) * h))

path = os.path.join(os.getcwd(), "images", "{}_{}.png".format(x, y))

image.save(path)

if __name__ == '__main__':

ic = ImageCrop(img_path="onepiece.png")

ic.crop()

原图如下:

0dcf96512fba80a09fbda9b45bb8566a.png

切割之后发朋友圈效果如下:

4bfe4ab1273ad5c5bb613b51f0ea4ea9.png

自此,Over~~~

原文链接:https://blog.csdn.net/y472360651/article/details/105737468

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于6宫格数独的解法,你可以使用Matlab实现。下面是一个使用回溯算法求解6宫格数独的示例代码: ```matlab function solveSudoku(grid) if solveHelper(grid) % 调用辅助函数进行求解 disp('解法找到:'); disp(grid); else disp('无解'); end end % 辅助函数:使用回溯算法求解数独 function result = solveHelper(grid) [row, col] = findEmptyCell(grid); % 找到空白格子 if row == -1 && col == -1 % 数独已经填满,成功找到解法 result = true; return; end for num = 1:6 if isValid(grid, row, col, num) % 判断当前位置是否可以填入数字num grid(row, col) = num; % 填入数字num if solveHelper(grid) % 递归调用进行下一步填数 result = true; return; end grid(row, col) = 0; % 回溯,将当前位置重置为空白格子 end end result = false; % 没有找到合适的解法 end % 辅助函数:判断在指定的位置row、col填入数字num是否合法 function isValidFlag = isValid(grid, row, col, num) isValidFlag = true; % 检查当前行是否合法 for c = 1:6 if grid(row, c) == num isValidFlag = false; return; end end % 检查当前列是否合法 for r = 1:6 if grid(r, col) == num isValidFlag = false; return; end end % 检查当前小九宫格是否合法 startRow = 3 * floor((row - 1) / 3) + 1; startCol = 2 * floor((col - 1) / 2) + 1; for r = 0:2 for c = 0:1 if grid(startRow + r, startCol + c) == num isValidFlag = false; return; end end end end % 辅助函数:找到数独中的一个空白格子 function [row, col] = findEmptyCell(grid) for r = 1:6 for c = 1:6 if grid(r, c) == 0 row = r; col = c; return; end end end row = -1; % 找不到空白格子,返回-1 col = -1; end % 测试代码 grid = [ 0, 0, 0, 2, 0, 0; 0, 0, 4, 0, 5, 0; 6, 0, 0, 0, 0, 2; 0, 3, 0, 0, 1, 0; 0, 0, 6, 0, 0, 0; 1, 0, 0, 0, 0, 3; ]; solveSudoku(grid); ``` 这段代码使用了回溯算法来求解数独,首先找到一个空白格子,然后尝试填入数字1-6,判断是否合法,递归地进行下一步填数,如果最终能够填满数独,则找到解法。由于回溯算法的复杂性,对于大规模的数独可能需要较长的计算时间。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值