文章结束给大家来个程序员笑话:[M]
1.首先配置QtCreator
可以参见 http://blog.csdn.net/cc7829290/article/details/8984706
应用的QtCreator,如果应用的其他编译器须要共事配置好Qt和openCV
2.首先应用Qt建立一个ui界面
绘制2个按钮和一个label
3.在头文件声明一个Mat类和一个QImage类
.处理添加两个按钮的slot;
并写入并分别写入如下代码
void MainWindow::on_openPushButton_clicked() { QString filename = QFileDialog::getOpenFileName(this,tr("Open Image"),"",tr("Image File(*.bmp *.jpg *.jpeg *.png)")); QTextCodec *code = QTextCodec::codecForName("gb18030"); std::string name = code->fromUnicode(filename).data(); image = cv::imread(name); if(!image.data) { QMessageBox msgBox; msgBox.setText(tr("image data is null")); msgBox.exec(); } else { cv::cvtColor(image,image,CV_BGR2RGB); img = QImage((const unsigned char*)(image.data),image.cols,image.rows,QImage::Format_RGB888); ui->label->clear(); ui->label->setPixmap(QPixmap::fromImage(img)); ui->processPushButton->setEnabled(true); ui->label->resize(ui->label->pixmap()->size()); } } void MainWindow::on_processPushButton_clicked() { cv::flip(image,image,1); img = QImage((const unsigned char*)(image.data),image.cols,image.rows,QImage::Format_RGB888); ui->label->setPixmap(QPixmap::fromImage(img)); }
须要注意的是
QTextCodec *code = QTextCodec::codecForName("gb18030"); std::string name = code->fromUnicode(filename).data();
这两句是为了应用中文路径,字符串中改成其他支持的中文的格式也可以
cv::cvtColor(image,image,CV_BGR2RGB);
在事实图像前一定要转换下
因为openCV应用的图像通道是BGR的而QImage应用的图像通道的RGB的;
4.显示效果如下
原始代码下载
http://download.csdn.net/detail/cc7829290/5474653
文章结束给大家分享下程序员的一些笑话语录:
AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!简直无所不拖!AdobeFlash滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!
---------------------------------
原创文章 By
矩阵和图片
---------------------------------