基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

这篇具有很好参考价值的文章主要介绍了基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理

基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理

基于PyQt5的桌面图像调试仿真平台开发(6)去马赛克

基于PyQt5的桌面图像调试仿真平台开发(7)伽马矫正

基于PyQt5的桌面图像调试仿真平台开发(8)锐化

基于PyQt5的桌面图像调试仿真平台开发(9)去噪

基于PyQt5的桌面图像调试仿真平台开发(10)色彩矩阵

基于PyQt5的桌面图像调试仿真平台开发(11)清晰度测试

基于PyQt5的桌面图像调试仿真平台开发(12)图像灰度显示

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

基于PyQt5的桌面图像调试仿真平台开发(14)色彩增强

基于PyQt5的桌面图像调试仿真平台开发(15)图像融合

工程代码:https://gitee.com/xiaoshixiao00/py-ispp


文章目录

目录

系列文章目录

前言

一、黑电平是什么

二、模拟实现黑电平矫正

1.开发UI和绑定控件

2.开发黑电平矫正算法

3.算法效果演示

总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、黑电平是什么

        黑电平矫正是一种对数字图像进行的后期处理技术,它主要用于消除图像中的黑色基底偏移。在数码相机或者扫描仪等数字成像设备中,由于器件偏差等因素,黑色基底并不总是完全为黑色,这就会导致图像中的暗区域亮度不平衡,影响图像的质量。黑电平矫正可以校正这种不平衡,以确保图像中的黑色基底完全为黑色,从而提高图像的质量和可视性。

二、模拟实现黑电平矫正

1.开发UI和绑定控件

①使用QtDesigner添加button到功能框

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

②,使用QtDesigner创建黑点平矫正操作页面,用于对rgb图像的三个维度进行单独矫正。本页面其实就是一个弹出框,点击上面主页面按钮后弹出。

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

 

 

③,使用PyUic转化Main_window.ui为Main_window.py,转化Blc_widget.ui为Blc_widget.py

③,在Main_app.py中添加自定义空间Widget_Event,此页面是所有弹出框的父类,用于处理右击,保存事件。

class Widget_Event(QWidget):
    def set_window(self, window):
        self.window = window

    # 右击事件
    def contextMenuEvent(self, event: QtGui.QContextMenuEvent) -> None:
        menu = QMenu(self)
        save_action = menu.addAction('保存')
        now_action = menu.exec_(self.mapToGlobal(event.pos()))
        print("右击:")
        if now_action == save_action:
            self.save_file()

    # 保存事件
    def save_file(self):
        print("save_file:")
        file, ok = QFileDialog.getSaveFileName(self, '文件保存', '/', 'png(*.png)')
        #print("proc:",self.window.src_proc)
        cv2.imwrite(file, cv2.cvtColor(self.window.src_proc, cv2.COLOR_RGB2BGR))
        print(file)

        MyBlcwidget继承自Widget_Event和Blc_widget.Ui_Form,这样MyBlcwidget既有自定义按钮的样式,也有保存右击等功能。

#blc处理
class MyBlcwidget(Widget_Event,Blc_widget.Ui_Form):
    def __init__(self):
        super(Widget_Event,self).__init__()
        self.setupUi(self)

        最后绑定按钮点击事件。

self.blc_btn.clicked.connect(self.on_click_blc_widget)

        按钮点击事件弹出对话框

#黑电平处理
    def on_click_blc_widget(self):
        self.mywidget=MyBlcwidget()
        self.mywidget.set_window(self)
        self.mydialog = MyOptDialog()#如果是局部变量会造成对话框弹出就消失
        for i in range(self.mydialog.opt_layout.count()):
            self.mydialog.opt_layout.itemAt(i).widget().deleteLater()
        self.mydialog.opt_layout.addWidget(self.mywidget)
        self.mydialog.show()
        self.mywidget.blc_sure_btn.clicked.connect(self.blc_proc_onclicksure)
        print("show blc widget")

        绑定对话框中图像处理算法确定事件

# blc处理确定事件
    def blc_proc_onclicksure(self):
        print("blc_proc_onclicksure")
        if self.open_src is not None:
            print(self.mywidget.blc_r_textEdit.toPlainText(), " ",
                  int(self.mywidget.blc_r_textEdit.toPlainText()))
            print(self.mywidget.blc_g_textEdit.toPlainText(), " ",
                  int(self.mywidget.blc_g_textEdit.toPlainText()))
            print(self.mywidget.blc_b_textEdit.toPlainText(), " ",
                  int(self.mywidget.blc_b_textEdit.toPlainText()))
            self.src_proc = Image_proc.proc_image_blc(self.open_src
                                                                , int(
                    self.mywidget.blc_r_textEdit.toPlainText()), int(
                    self.mywidget.blc_g_textEdit.toPlainText()), int(
                    self.mywidget.blc_b_textEdit.toPlainText()))
            self.dialg_display_proc_img()
            print("Img Not None")
        else:
            print("Img Is None")

2.开发黑电平矫正算法

        黑电平矫正使用最简单的减法即可,减去的值就是无光下传感器的基值,需要使用具体的传感器标定工具进行标定。

#图像黑电平处理
def proc_image_blc(image_rgb,r,g,b):
    print("proc_image_blc:",r,g,b)
    r_ary,g_ary,b_ary=cv2.split(image_rgb)
    r_ary = (r_ary.astype('int32') - r).clip(0, 255).astype('uint8')# 防止减到负数
    g_ary = (g_ary.astype('int32') - g).clip(0, 255).astype('uint8')
    b_ary = (b_ary.astype('int32') - b).clip(0, 255).astype('uint8')
    result = cv2.merge([r_ary, g_ary, b_ary])
    return result

3.算法效果演示

导入原图片:

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

算法处理后:

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

 处理后图像会变暗。


总结

黑电平矫正往往直接对raw图进行矫正,rgb矫正影响较大。文章来源地址https://www.toymoban.com/news/detail-514020.html

到了这里,关于基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于PyQt5的桌面图像调试仿真平台开发(11)清晰度测试

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月12日
    浏览(41)
  • 《PyQt5桌面应用开发》结束语

    这个系列从五月初期写到现在,一共写了21篇,基本上把我个人感觉里面PyQt5中比较有意思的内容都涉及到了。总的来说,一大部分是我很满意的,也是我在使用PyQt5中感觉到的痛点与花费了很常见去看文档的部分。也有不满意的地方,那就是所有的都写得很浅很浅。只能是做

    2024年02月11日
    浏览(53)
  • PyQt5桌面应用开发(10):界面布局基本支持

    PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发(3):并行设计 PyQt5桌面应用开发(4):界面设计 PyQt5桌面应用开发(5):对话框 PyQt5桌面应用开发(6):文件对话框 PyQt5桌面应用开发(7):文本编辑+语法高亮与行号 PyQt5桌面应用开

    2024年02月03日
    浏览(34)
  • PyQt5桌面应用开发(16):定制化控件-QPainter绘图

    PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发(3):并行设计 PyQt5桌面应用开发(4):界面设计 PyQt5桌面应用开发(5):对话框 PyQt5桌面应用开发(6):文件对话框 PyQt5桌面应用开发(7):文本编辑+语法高亮与行号 PyQt5桌面应用开

    2024年02月06日
    浏览(56)
  • PyQt5桌面应用开发(21):界面设计结果自动测试(二)

    PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发(3):并行设计 PyQt5桌面应用开发(4):界面设计 PyQt5桌面应用开发(5):对话框 PyQt5桌面应用开发(6):文件对话框 PyQt5桌面应用开发(7):文本编辑+语法高亮与行号 PyQt5桌面应用开

    2024年02月09日
    浏览(43)
  • 界面开发(4)--- PyQt5实现打开图像及视频播放功能

    上篇文章主要介绍了如何实现登录界面的账号密码注册及登录功能,还简单介绍了有关数据库的连接方法。这篇文章我们介绍一下如何在设计的页面中打开本地的图像,以及实现视频播放功能。 为了便于记录实现细节,我们尽量一步步地来。之前的文章已经介绍过如何将新的

    2023年04月09日
    浏览(42)
  • 基于PyQt5的图形化界面开发——队列动画演示

    本文使用PyQt5制作图形化界面演示数据结构中的 队列 操作,与上一节队列动画相对应 基于PyQt5的图形化界面开发——队列动画演示 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:PyQt5 队列(Queue)是一种常用的数据结构,类似于现

    2024年02月07日
    浏览(52)
  • 基于PyQt5的UI界面开发——信号与槽

    PyQt5采用了一种被称为“信号与槽”机制的编程模式,用于处理对象间的通信和事件处理。在PyQt5中,信号(signal)是对象发出的特定事件,例如按钮被点击、文本被修改等。而槽(slot)是与信号相关联的特定动作或函数。当信号被触发时,与之相关联的槽会被自动调用。 槽

    2024年02月16日
    浏览(45)
  • 基于PyQt5的图形化界面开发——自制ssh工具

    本节我们使用PyQt5来制作一个简单的ssh小工具。 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库: PyQt5 和 paramiko 本节需要安装第三方库PyQt5和paramiko,如果你并不熟悉第三方库的安装,你可以参考以下文章来学习: Python第三方库安装

    2024年02月06日
    浏览(42)
  • 基于PyQt5的图形化界面开发——模拟医院管理系统

    本节以医院管理系统为例,使用PyQt5模拟医院系统的功能。 本次用到的数据结构思想为队列,使用队列能够更真实的反映医院排队等候的情况(先挂号者先就诊),事实上 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:PyQt5 如果你

    2024年02月02日
    浏览(112)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包