码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt QImage 图像处理(翻转,灰度,亮度)代码实现


    1.界面效果

    该程序利用QImage类对图片像素进行操作,实现图像的翻转,转灰度,增加亮度的效果。模拟图像处理效果背后的算法实现。后续可以陆续增加其他图像处理功能,可进一步扩展。
    在这里插入图片描述

    • 项目结构
      主要涉及一个图像处理类-QImageProcess
      在这里插入图片描述
      在这里插入图片描述
      可优化的空间:
    • .可以将图片加载的label封装为一个类,实现PaintEvent函数,利用update直接进行刷新提高效率。
    • 可以尝试将Qimage一行行读取像素为uchar*,再进行像素操作提高效率,节省内存空间以及拷贝的时间。
      在这里插入图片描述
    • scanlin官方解释:
      uchar QImage::scanLine(int i)
      Returns a pointer to the pixel data at the scanline with index i. The first scanline is at index 0.
      The scanline data is as minimum 32-bit aligned. For 64-bit formats it follows the native alignment of 64-bit integers (64-bit for most platforms, but notably 32-bit on i386).
      Warning: If you are accessing 32-bpp image data, cast the returned pointer to QRgb
      (QRgb has a 32-bit size) and use it to read/write the pixel value. You cannot use the uchar* pointer directly, because the pixel format depends on the byte order on the underlying platform. Use qRed(), qGreen(), qBlue(), and qAlpha() to access the pixels.
      See also bytesPerLine(), bits(), Pixel Manipulation, and constScanLine().

    2.图像处理的原理

    2.1 图像翻转

    • 包括水平镜像和垂直镜像
      在这里插入图片描述
      代码示例

    • 垂直翻转
      在这里插入图片描述
      == 效果==
      在这里插入图片描述

    • 水平翻转
      在这里插入图片描述

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

    • 对角线翻转
      对角线翻转等于前两个翻转的叠加
      在这里插入图片描述

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

    2.2 彩色图转变为灰度图

    • 原理:三通道彩色图转单通道灰度图的原理就是让单个像素的R,G,B值都相等。
      代码示例
      在这里插入图片描述
    • 效果
      在这里插入图片描述

    2.3 调整图像亮度

    • 原理:就是让图像像素的R,G,B都增加一个数值,增加后的数值在区间0~255范围内。
      代码示例
      在这里插入图片描述
    • 效果
      在这里插入图片描述

    3.主窗口代码

    • 初始化主窗口
      在这里插入图片描述
    • 初始化label,加载原始图片
      在这里插入图片描述
    • 连接信号与槽函数

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    9.1 C++ STL 排序、算数与集合
    华为智慧屏 招一招即可分享运动状态,搜索运动教程,同时还可通过手机操控智慧屏
    前端el-date-picker传递的日期格式不是自己想要的格式
    redis archive github
    【Linux】线程属性的定义&如何修改线程属性(附图解与代码实现)
    Mysql DATETIME与TIMESTAMP的区别
    SpringBoot---------@Value,@ConfigurationProperyies以及多环境开发配置
    [NLP]LLM--使用LLama2进行离线推理
    Android 11 内置apk+替换系统Launcher
    quartz详解
  • 原文地址:https://blog.csdn.net/Wwc_code/article/details/126089305
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号