Python实现马赛克图片处理

文章目录

  • 读取图片代码
    • 1、导入使用包
    • 2、读取图片
  • 操作图片
    • 1、上下翻转
    • 2、左右翻转
    • 3、颜色颠倒
    • 4、降低图片精度
    • 5、打马赛克

说明: 在python中,图片可以看成一个三维的矩阵,第一维控制着垂直方向,第二维控制着水平方向,第三维控制颜色。

读取图片代码

1、导入使用包

import numpy as np
import matplotlib as plt
%matplotlib inline

使用%matplotlib inline可以省略plt.show()

2、读取图片

fish = plt.imread('./fish.png')
plt.imshow(fish)

得到的fish对象的值则为图片的矩阵

array([[[0.29411766, 0.39215687, 0.46666667],[0.46666667, 0.4862745 , 0.49803922],[0.4627451 , 0.4862745 , 0.5019608 ],...,[0.4627451 , 0.48235294, 0.49803922],[0.45882353, 0.47843137, 0.49803922],[0.21960784, 0.33333334, 0.44313726]],[[0.2901961 , 0.3764706 , 0.44313726],[0.627451  , 0.6156863 , 0.60784316],[0.85490197, 0.85490197, 0.84705883],...,[0.8627451 , 0.85882354, 0.8509804 ],[0.8509804 , 0.8509804 , 0.84313726],[0.30588236, 0.42352942, 0.5254902 ]],[[0.44705883, 0.45490196, 0.45490196],[0.65882355, 0.654902  , 0.654902  ],[1.        , 1.        , 1.        ],...,[1.        , 1.        , 1.        ],[1.        , 1.        , 1.        ],[0.36078432, 0.49411765, 0.6       ]]], dtype=float32)

效果:
在这里插入图片描述

操作图片

1、上下翻转

fish2 = fish[::-1]
plt.imshow(fish2)

在这里插入图片描述

2、左右翻转

fish3 = fish[::, ::-1]
plt.imshow(fish3)

在这里插入图片描述

3、颜色颠倒

fish4 = fish[::, ::, ::-1]
plt.imshow(fish4)

在这里插入图片描述

4、降低图片精度

fish5 = fish[::4, ::4]
plt.imshow(fish5)

在这里插入图片描述

5、打马赛克

fish6 = fish.copy()
fish6[70:90, 80:120] = 0
plt.imshow(fish6)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305630.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+element+springboot实现多张图片上传

1.需求说明 2.实现思路 3.el-upload组件主要属性说明 4.前端传递MultipartFile数组与服务端接收说明 5.完整代码 1.需求说明 动态模块新增添加动态功能,支持多张图片上传.实现过程中对el-upload组件不是很熟悉,踩了很多坑,当然也参考过别的文章,发现处理很…

配置代理解决跨域(CORS)问题

一、跨域 ? 我们在完成前后端分离项目时(VueSpringBoot),有很多人会遇到跨域问题(CORS)。 跨域(Cross-Origin Resource Sharing,CORS)是浏览器的一项安全功能&#xff…

【数据库】为什么要分库分表

为什么要分库分表 1.为什么要分库分表?2.垂直拆分3.水平拆分4.总结4.1 逻辑库和物理库4.2 逻辑表和物理表 1.为什么要分库分表? 随着近些年信息化大跃进,各行各业无纸化办公产生了大量的数据,而越来越多的数据存入了数据库中。当…

Leetcode—1572.矩阵对角线元素的和【简单】

2023每日刷题&#xff08;七十三&#xff09; Leetcode—1572.矩阵对角线元素的和 实现代码 class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int n mat.size();if(n 1) {return mat[0][0];}int sum 0;int i 0, j n - 1;while(i &…

Leetcode 763 划分字母区间

题意理解&#xff1a; 要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 输入&#xff…

Java——值得收藏的Java final修饰符总结!!!

Java final修饰符总结 一、final修饰类二、final修饰方法三、final修饰变量 总结 算下刚转Java到现在也有三个多月了&#xff0c;所以打算对Java的知识进行汇总一下&#xff0c;本篇文章介绍一下Java的final修饰符的作用&#xff0c;final表示最后的、最终的含义&#xff0c;fi…

硅像素传感器文献调研(三)

写在前面&#xff1a; 引言&#xff1a;也是先总结前人的研究结果&#xff0c;重点论述其不足之处。 和该方向联系不大&#xff0c;但还是有值得学习的地方。逻辑很清晰&#xff0c;易读性很好。 1991年—场板半阻层 使用场板和半电阻层的高压平面器件 0.摘要 提出了一种…

没错,这条短视频烂尾了

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 “你这个太标题党了&#xff0c;后悔点进去了” “松哥&#xff0c;下次增加点故事情节” “你这是哪是沉浸式&#xff0c;你这是自嗨啊” “那你这拍了个寂寞” “这视频&#xff0c;开头可以&#xff0c;烂尾了” …

如何从 DSA 切换到 PMax 以使您的 Google 付费广告面向未来

为了在 Google Ads 不可避免的过渡期之前&#xff0c;我们将介绍如何从动态搜索广告切换到效果最大化广告 如何从 DSA 切换到 PMax 以使您的 Google 付费广告面向未来 变化是唯一不变的&#xff0c;尤其是在数字广告中——您可能听说过一些关于动态搜索广告 &#xff08;DSA&…

webstorm中直接运行ts(TypeScript)

参考&#xff1a;https://www.cnblogs.com/yangfanjie/p/12036118.html 1&#xff1a;安装ts: npm install -g typescript 2&#xff1a;安装直接运行所需依赖包&#xff1a; npm install -g ts-node 3&#xff1a;在设置中安装安装插件后重启 4&#xff1a;重启后就会发现在…

高效编写测试用例

本话题暂不探讨是否有必要编写详细的测试用例&#xff0c;在确定要交付详细的测试用例这个前提下&#xff0c;分享如何更高效地完成测试用例的编写。 对齐测试用例需求 首先、明确要完成的测试用例文档目标要求&#xff0c;模板、范围、粒度等。 用例文档使用者&#xff1a;…

github登录需要双因素认证(Two-factor authentication)

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 github登录需要双因素认证&#xff08;Two-factor authentication&#xff09; 今天登录github发现需要绑定双因素才能够登录 我们…