QT图像质量双盲测试小软件的编写学习(2)

分别从A和B里读一幅图A1和B1,把A1和B1一左一右同时显示在软件界面上,但位置随机(50%在左,50%在右)

1.QDir类用来操作路径名及底层文件系统,获取关于目录路径及文件的相关信息。
获取当前路径文件下所有图片目录列表
头文件:`

private:
    Ui::DisplayInterface *ui;
    QDir dirA,dirB;
    QString dirAPath,dirBPath;  //图片所在文件夹
    int total_image_count=0; //图片组数

`源文件

void DisplayInterface::Show_DisplayInterface_Page(const QString& pathA,const QString& pathB)
{
//记录从上一界面传来的路径
    dirAPath=pathA;
    dirBPath=pathB;
   
    dirA.setPath(pathA);
    dirB.setPath(pathB);

    QStringList ImageList;
        ImageList << "*.bmp" << "*.jpg" << "*.png";
    dirA.setNameFilters(ImageList);
    dirB.setNameFilters(ImageList);

    total_image_count=dirA.count(); //一共有多少组图片

    show_next_image(dirAPath,dirBPath);

    this->show();
}

另外与前界面信号连接应设置
在getpath.h设置信号

signals:
    void show_DisplayInterface_page(const QString&,const QString&);

在displayinterface.h设置槽

private slots:
    void Show_DisplayInterface_Page(const QString&,const QString&);

在main.c中连接

QObject::connect(&getPath,SIGNAL(show_DisplayInterface_page(const QString&,const QString&)),
                     &displayInterface,SLOT(Show_DisplayInterface_Page(const QString&,const QString&)));

2.设置随机数种子,得到0-1的随机数,若得到的随机数是0放在左边,得到的随机数是1放在右边。

int DisplayInterface::getRandomNumber()
{
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));//随机数种子,不能放在循环里,否则容易出现很多相同随机数
    return (qrand()%2);//产生随机数0-1
}
void DisplayInterface::show_next_image(const QString& dirAPath,const QString& dirBPath)
{
    //存放每张图片的路径
    QString ImageAPath=dirAPath+"/"+dirA[current_img_index];
    QString ImageBPath=dirBPath+"/"+dirB[current_img_index];
    //每运行一次图片序号+1
    ++current_img_index;
    qDebug()<<"curIndex:"<<current_img_index<<endl;
    QImage imageA(ImageAPath);
    QImage imageB(ImageBPath);
     //设置图片等比缩放
    imageA=imageA.scaled(500, 500);
    imageB=imageB.scaled(500, 500);
    //获取随机数
     randomNumber=getRandomNumber();
    qDebug()<<"随机数为:"<<randomNumber<<endl;
    if(randomNumber==0){
        //A图放postion0
        ui->position0->setPixmap(QPixmap::fromImage(imageA));
        ui->position1->setPixmap(QPixmap::fromImage(imageB));

    }
    else{
        //A图放position1
        ui->position1->setPixmap(QPixmap::fromImage(imageA));
        ui->position0->setPixmap(QPixmap::fromImage(imageB));

    }


}

QT图像质量双盲测试小软件的编写学习(2)

上一篇:UML建模之活动图介绍(Activity Diagram)


下一篇:Qt编写安防视频监控系统43-图片回放