第一步:
绘制好界面图
然后对对每个控件 右键 进行转入信号糙 添加代码
对pro文件加入
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so
其余代码如下:
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_nextButton_clicked();
void on_closeButton_clicked();
private:
Ui::MainWindow *ui;
int next_num;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//setStyleSheet为设置工作表的风格,其参数是一个Qstring类型,utf-8是unicode中一种变长编码
//background-color为Qt Style Sheets的一个属性,具体的使用方法可以查看其帮助文档
ui->textBrowser->setStyleSheet(QString::fromUtf8 ("background-color:black"));
next_num = 0;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_nextButton_clicked()
{
next_num ++;
ui->textBrowser->setTextColor( Qt::green );
switch (next_num)
{
case 1:
{
ui->textBrowser->append
(
"--------------------------------------------------------------------------\r"
"This program shows how to create matrices(cv::Mat) in OpenCV and its serial"
" out capabilities\r"
"That is, cv::Mat M(...); M.create and cout << M.\r "
"Shows how output can be formated to OpenCV, python, numpy, csv and C styles.\r"
"Usage:\r"
"./cvout_sample\r"
"--------------------------------------------------------------------------\r"
);
break;
}
case 2:
{
Mat M( 2, 2, CV_8UC3, Scalar(0,255,0) );//其实是2*6的矩阵,因为每个元素有3个通道。
ui->textBrowser->append("create by using the constructor......" );
cout<<"M = "<<M<<endl;
M.create( 4, 4, CV_8UC(2) );//括号里面的2表示2通道
ui->textBrowser->append( "create by using create function......" );
cout<<"M = "<<M<<endl;
break;
}//当case语句里面变量定义时,需要用括号括起来,否则会报错
case 3:
{
int sz[3] = {2, 2, 2};
Mat L( 3, sz, CV_8UC(1), Scalar::all(0) );
ui->textBrowser->append( "create multidimensional matrix......" );
// cout<<"L = "<<L<<endl;此处不能打印出来,因为那只适应二维数组
break;
}
case 4:
{
Mat E = Mat::eye(4, 4, CV_64F);
Mat O = Mat::ones(2, 3, CV_32F);
Mat Z = Mat::zeros(3, 3, CV_8UC1);
ui->textBrowser->append( "using matlab stytle......" );
cout<<"E = "<<E<<endl;
cout<<"O = "<<O<<endl;
cout<<"Z = "<<Z<<endl;
break;
}
case 5:
{
Mat C =(Mat_<double>(3,3)<<0,-1,0,-1,5,-1,0,-1,0);//直接赋初始值的方法
Mat row_clone = C.row(1).clone();
ui->textBrowser->append( "create 3*3 double-precision identity matrix......" );
cout<<"C = "<<C<<endl;
cout<<"row_clone = "<<row_clone<<endl;
break;
}
case 6:
{
Mat R = Mat( 3, 2, CV_8UC3 );
randu( R, Scalar::all(0), Scalar::all(255) );
ui->textBrowser->append( "fill a matrix with rand numbers......" );
cout<<"R (default) = "<<R<<endl;
ui->textBrowser->append( "demonstrate the output formating options......" );
cout<<"R (python) = "<<format(R, "python")<<endl;
cout<<"R (numpy) = "<<format(R, "numpy")<<endl;//numpy是一个用python实现的科学计算包
cout<<"R (csv) = "<<format(R, "csv")<<endl;//csv,逗号分隔符
cout<<"R (c) =" <<format(R, "C")<<endl;
break;
}
case 7:
{
ui->textBrowser->append( "the point format output......" );
Point2f P1(5, 1);
cout<<"Point (2D) = "<<P1<<endl;
Point3f P2(4, 5, 6);
cout<<"Point (3D) = "<<P2<<endl;
vector<float>v;
v.push_back( (float)CV_PI);
v.push_back( 2 );//push_back为在其尾部加入一个数据
v.push_back( 3.01f );
cout<<"vector of float: = "<<Mat(v)<<endl;//vector数据是没法单独输出的,因此可以借助mat输出
int N = 20;
vector<Point2f>vPoints(N);//vector可以用变量定义其长度,比数组好用
for( size_t E = 0; E < vPoints.size(); ++E ) //size_t其实就是一个unsigned int类型
vPoints[E] = Point2f((float)(E*5), (float)(E%7));
cout<<"vPoints[] = "<<vPoints<<endl;//但是vector点确实可以直接输出的,因为这时候的vector本身就是
//一个多维(至少2维)Mat了
break;
}
default:break;
}
}
void MainWindow::on_closeButton_clicked()
{
close();
}
main.cpp:
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
结束 http://www.cnblogs.com/tornadomeet opencv博客