Python+OpenCV+matplotlib+wxPython实现的图像处理程序

2023-05-16

Python+OpenCV+matplotlib+wxPython实现的图像处理程序

  • 背景:本学期多媒体技术原理与应用课程的实验
    • 部分代码
    • 结果截图
    • 结语

背景:本学期多媒体技术原理与应用课程的实验

本学期有一门课程是多媒体技术原理与应用,虽然看培养方案上没有实践课程,但是老师居然还准备了好几个实验,看来老师真是为我们着想。这次是第一个实验,题目比较简单:
编制程序,实现图像文件(如bmp等)的读取、显示、真彩图
转换成灰度图、灰度图转化为二值图及绘制图像直方图功能;

老师要求不允许在真彩图转灰度、灰度转二值图时不允许调库,即使不调库,用裸用python+opencv+matplotlib就可以不超过50行代码实现,就是直接遍历像素点的效率肯定是比不过人家封装好并且优化了的库函数(向np.where()以及cv.cvtColor()都是经过优化的,所以处理的时候明显感觉比库函数慢多了)。我想着即使不调库也很简单,不如整个GUI,还可以让用户自己选择要读取的文件,岂不美哉!于是,现学wxPython(其实就是照着网上教程走,然后有些坑的地方不断谷歌~,最后写出了成品(虽然还是很垃圾,但是相当于一个UI界面就显示完所有的图像,感觉体验比opencv直接冒出多个窗口好点,大佬勿喷 ~~~)

部分代码

主要是还要交实验报告,不方便直接把代码全贴上来,想要完整代码的朋友可以私信我~~~

#暂时只贴一个让我感到神奇的片段:gamma校正,就是将真彩图转换成灰度图(之前说过,老师不许调库)

#该方法将真彩色图转换成灰度图,由于不允许直接使用库函数,所以遍历每个像素点,并对其进行gamma校正,gamma一般取2.2
    def rgbToGray(self, event):
        g = self.colorImg.copy()
        w, h = g.shape[:2][::-1]
        for i in range(0, h):
            for j in range(0, w):
                x = int((1 * g[i, j][2]) ** 2.2) + int((1.5 * g[i, j][1]) ** 2.2) + int((0.6 * g[i, j][0]) ** 2.2)
                y = 1 ** 2.2 + 1.5 ** 2.2 + 0.6 ** 2.2
                g[i, j] = int((x / y) ** (1 / 2.2))
        pic = wx.Bitmap.FromBuffer(w, h, self.BGR2RGB(g))
        self.m_bitmap2.SetBitmap(pic)
        np.resize(self.grayImg,(w,h))
        self.grayImg=g

结果截图

点击第一个按钮后会弹出文件选择框,用户可以自己选择要展示的文件
点击第一个按钮后会弹出文件选择框,用户可以自己选择要展示的文件点击第二个按钮后可以将第一个按钮读取到的真彩色图像转换成灰度图像

点击第三个按钮后将灰度图转换成二值图
在这里插入图片描述点击第四个按钮后,我用的PyCharm开发工具,会在右侧的Plots中看到真彩图对应的图像直方图,然后再我们的UI界面也会看到一模一样的图像直方图。这个实现也不算难。

点击第一个按钮后会弹出文件选择框,用户可以自己选择要展示的图片

结语

虽然我写的很烂(不论是这次的代码还是博客,都写得很烂),但是我会不断改进的~
希望各位大佬们给个一键三连~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python+OpenCV+matplotlib+wxPython实现的图像处理程序 的相关文章

  • RTOS信号量、邮箱、队列与事件

    一 定义 信号量 xff0c 邮箱 xff0c 队列的最大不同在于它们发送的内容不同 1 信号量是一个触发信号 xff0c 也是一个计数器 xff0c 等待接收信号的任务一般只有接收到信号才可以执行 xff0c 否则任务一直暂停 xff08
  • px4|添加自己的topic并记录至日志

    用于添加自己新建的话题并保存需要的数据至日志方便后续调试分析 目录 一 新建 msg文件 二 添加 msg文件路径至CMakeLists txt 三 添加该话题至日志中 四 编译与使用 一 新建 msg文件 在工程文件目录下的msg文件夹中
  • PX4|mavros offboard控制

    在px4官网中有相关mavros的教程MAVROS Offboard control example C 43 43 PX4 自动驾驶用户指南 本文将对该教程进行复现 xff0c 并加以细节补充 首先安装mavros sudo apt ge
  • PX4|电脑端发送自定义mavros消息至飞控端(mavros二次开发

    本文将实现在电脑端利用mavros将自定义消息发送至飞控端 xff0c 并在飞控段将接受到的信息打印至日志输出 针对mavros二次开发需要对相关ros包进行源码编译 xff0c 具体步骤如下 建立工作空间 span class token
  • Fidder判断前后端的问题

    第一种情况 xff1a fiddler 在没有设置过过滤器的情况下面没有抓到请求信息 xff0c 可能是前端页面元素没有绑定事件 xff0c 也有可能是前端发生了JS 错误 xff0c 这就是前端的bug 第二种情况 xff1a 若抓取到的
  • C++中::和:的用法

    前言 xff1a 虽然C 43 43 中 xff1a xff1a 和 xff1a 比较常见 xff0c 但是闭上眼睛回忆一下两者的用法 xff0c 但还真不一定能全部回答上来 xff0c 现在就做个总结 xff1a 1 单冒号 xff1a
  • 树莓派安装系统和ROS,并换成国内软件源。

    这里直接放出我参考的几位博主的帖子 xff1a 树莓派社区网站 xff1a 树莓派资源下载 树莓派实验室 一 安装ubuntu mate系统 在树莓派4B上安装Ubuntu Mate 20 04 和ROS 老孟 xff08 MLY xff0
  • ROS中无法定位软件包问题

    一 ROS版本不对 ROS 和ubuntu版本对应关系 二 ROS软件源有问题 类似于以下问题多半是ROS软件源不对 更换ROS软件源 在目录 etc apt sources list d中 软件源更换为中科大的软件源 deb https
  • 手机用久了就慢,卡到不行,怎么回事?三招帮你搞定!

    大家使用智能手机时 xff0c 是不是都有这样的困扰 手机用久了 xff0c 速度越来越慢 手机为什么会越来越慢 xff0c 如何才能发挥手机的最大性能 xff1f 别急 xff0c 小4妹三招帮你搞定 xff01 安卓手机提速秘笈 内存大
  • Matlab 读取txt文件指定行的数据

    方法1 方案1 filename 61 39 volume sress displace txt 39 替换为实际的文件名 line number 61 4 替换为实际的行号 打开文件并读取行 fid 61 fopen filename f
  • 树莓派从入门到放弃之VNC开机自启动和修改语言

    一 VNC开机自启动配置 使用VNCviewer连接树莓派或者使用Putty连接 xff0c 打开终端 首先编辑vncserver配置文件键入 xff1a sudo nano etc init d vncserver 复制以下代码 xff0
  • 审稿中ff是什么意思

    f 或者 ff 都是表示引用页数的 xff0c 意思是 xff1a and following page or pages 比如 36 ff xff0c 表示36页之后的页数被用作参考 如果只有1个f 90f 就表示90页和91页 refe
  • mesoscale hydrologic model (mHM) 和multiscale parameter regionalization (MPR)

    文章目录 常见问题what is mesoscale hydrologic model mHM how does the mHm model upscale the parameterswhat is the multiscale para
  • Word转PDF

    首先在投稿的时候发现上转的文件转成PDF有一些图片缺失了 xff0c 推测是图片太大的原因 xff08 但是图片并不是很大 xff0c 目前还不知道原因 x1f622 xff09 尝试使用先本地用Microsoft Print to PDF
  • 新bing/New bing配置和操作

    申请进入候补名单完成任务获得加速使用header editor插件防止跳转到国内bing使用user agent修改浏览器的ui
  • PCA-APCA-MLR

    全称 principal component analysis absolute principal component score multiple linear regression 原理 绝对因子分析 多元线性回归受体模型 APCS
  • partial least squares regresssion (PLSR)偏最小二乘

    适用范围 样本量很小 不是正态分布 线性回归一般需要满足正态分布 原理 使用了包括PCA 典型相关 步骤 第一步 确认主成分数量 通过交叉有效性 RMSEP图和投影重要性VIP分析进行确认 第二步 基于第一步主成分数量基础上 进行分析 第二
  • plt.subplots_adjust(wspace=0.01, hspace=0.01)

    有时候这个质量调节没有变化 xff0c 依然保留大的gaps无法remove xff0c 这个时候试着调整一下figsize参数 xff0c 将figsize调小一点
  • MODIS四天产品的差值为daily数据并进行sg滤波处理

    span class token keyword import span numpy span class token keyword as span np span class token keyword from span scipy
  • 盘点外卖订单奇葩备注:来的时候要鬼鬼祟祟

    文 观察者网 林西 外卖订单多了 xff0c 什么奇葩要求都有 虽然说偶尔也有这种备注届的暖心清流 但大部分时候 xff0c 吃货们画风清奇的备注要求 xff0c 真心要把外卖小哥折磨得昏古气 比如说 xff0c 爸爸不让吃宵夜 xff0c

随机推荐