zoukankan      html  css  js  c++  java
  • QT 数字图像处理 笔记一

    1.被有符号整数和无符号整数十足的坑了一上午。我在实现图像旋转的时候先把坐标轴中心平移到图像中心:painter.translate(up_x+temp_w,up_y+temp_h);注意这里面各个数都是32位无符号整数。在旋转完整后,我希望把坐标轴归位,就直接用了painter.translate(-(up_x+temp_w),-(up_y+temp_h))。于是就在这里被坑了,两个无符号整数相加还是无符号整数,如果直接在前面加个负号的话就是求补了,得到这个数绝对不是原来数的相反数,所以坐标轴就不知道被移到哪里去了,图像自然就显示不出来。最后,简单总结一下,QT实现图像旋转的代码:

    void MainWindow::paintEvent(QPaintEvent *e)
    {
            QPainter painter(this);
            //QImage image = QImage(filename_png,0);
            QImage image = QImage(png_data,width,height,QImage::Format_ARGB32);
    
            if(rotate2)
            {
                quint32 temp_w = width/2;
                quint32 temp_h = height/2;
                painter.translate(up_x+temp_w,up_y+temp_h);
    
                painter.rotate(angel);
    
                qint32 temp1 = -(up_x+temp_w);
                qint32 temp2 = -(up_y+temp_h);
                painter.translate(temp1,temp2);
            }
            painter.drawImage(up_x,up_y,image);
    }

     2.QMessageBox最简单用法:

    1 //在头文件里面包含这几行,使得QMessageBox里面的中文正常显示,在头文件里面还要包含#include"qtextcodec.h"


    2
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312")); 3 QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); 4 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));

    QMessageBox::warning(this, "警告","请先选择裁剪区域!",QMessageBox::Yes);
  • 相关阅读:
    关于HashMap的线程安全问题
    Java利器之UML类图详解
    mongoDB4.0数据库
    requests-html库render的使用
    爬虫最新的库requests-html库总结
    爬虫多次爬取时候cookie的存储用于登入
    requests模块响应体属性和方法重新整理
    Visual Studio 代码补全功能有时候会失效的原因
    C++Primer笔记——文本查询程序(原创,未使用类)
    Clion 常用快捷键
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3700433.html
Copyright © 2011-2022 走看看