[OpenCV] Install openCV in Qt Creator
Learn openCV.pdf
qmake: link with opencv (Key Point)
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = displayimage
TEMPLATE = app INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui SOURCES += main.cpp\
mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui
main.cpp
#include "mainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp> //add MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
cv::Mat inputImage = cv::imread("/home/unsw/Pictures/me/lolo.JPG"); //add
cv::imshow("Display Image", inputImage); //add
} MainWindow::~MainWindow()
{
delete ui;
}
ch2_ex2_1: 打开并显示图片
#include "highgui.h" int main( int argc, char** argv )
{
// IplImage* img = cvLoadImage( argv[1] );
IplImage* img = cvLoadImage( "/home/unsw/Pictures/me/lolo.JPG",
CV_WINDOW_AUTOSIZE); cvNamedWindow("lolo", CV_WINDOW_FREERATIO);
cvShowImage("lolo", img );
cvWaitKey();
cvReleaseImage( &img );
cvDestroyWindow("lolo");
}
ch2_ex2_2: 打开并显示视频
int main( int argc, char** argv ) {
cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
//CvCapture* capture = cvCaptureFromAVI( argv[1] ); // either one will work
CvCapture* capture = cvCreateFileCapture( "/home/unsw/test.avi" ); // 放每一帧的buf
IplImage* frame;
while() {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2", frame ); //不需要手动释放,capture的释放即顺便将其释放
char c = cvWaitKey(); //33ms, 30frames per second.
if( c == ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
}
ch2_ex2_3: 打开并显示视频 + Control Bar
可以使用QT的图形界面控制,非重点here。
ch2_ex2_4: 平滑处理图片
#include "cv.h"
#include "highgui.h" void example2_4( IplImage* image )
{
// Create some windows to show the input
// and output images in.
//
cvNamedWindow( "Example2_4-in", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Example2_4-out", CV_WINDOW_AUTOSIZE ); // Create a window to show our input image
//
cvShowImage( "Example2_4-in", image ); // Create an image to hold the smoothed output
//
IplImage* out = cvCreateImage(
cvGetSize(image),
IPL_DEPTH_8U, ); // Do the smoothing
//
cvSmooth( image, out, CV_GAUSSIAN, ,5,0,0 );
cvSmooth( out, out, CV_GAUSSIAN, ,5,0,0); // Show the smoothed image in the output window
//
cvShowImage( "Example2_4-out", out ); // Be tidy
//
cvReleaseImage( &out ); // Wait for the user to hit a key, then clean up the windows
//
cvWaitKey( );
cvDestroyWindow("Example2_4-in" );
cvDestroyWindow("Example2_4-out" ); } int main( int argc, char** argv )
{
IplImage* img = cvLoadImage( argv[] );
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
cvShowImage("Example1", img );
example2_4( img );
// cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow("Example1");
}
ch2_ex2_8: 灰度化(Gray) --> 缩小图片(Pyr) --> 线条化(Canny)
#include "cv.h"
#include "highgui.h" IplImage* doCanny(
IplImage* in,
double lowThresh,
double highThresh,
double aperture)
{
IplImage* out = cvCreateImage(
cvGetSize( in ),
in->depth, //IPL_DEPTH_8U,
);
cvCanny( in, out, lowThresh, highThresh, aperture );
return( out );
}; IplImage* doPyrDown(
IplImage* in,
int filter = IPL_GAUSSIAN_5x5)
{ // Best to make sure input image is divisible by two.
//
assert( in->width% == && in->height% == ); IplImage* out = cvCreateImage(
cvSize( in->width/, in->height/ ),
in->depth,
in->nChannels
);
cvPyrDown( in, out );
return( out );
}; int main( int argc, char** argv )
{
cvNamedWindow("Example Gray", CV_WINDOW_AUTOSIZE );
cvNamedWindow("Example Pyr", CV_WINDOW_AUTOSIZE );
cvNamedWindow("Example Canny", CV_WINDOW_AUTOSIZE );
IplImage* img_rgb = cvLoadImage( "/home/unsw/lolo.jpg" );
IplImage* out; out = cvCreateImage( cvSize( img_rgb->width,img_rgb->height ), img_rgb->depth, );
cvCvtColor(img_rgb, out ,CV_BGR2GRAY);
cvShowImage("Example Gray", out );
out = doPyrDown( out );
out = doPyrDown( out );
cvShowImage("Example Pyr", out );
out = doCanny( out, , , );
cvShowImage("Example Canny", out ); cvWaitKey();
cvReleaseImage( &out);
cvDestroyWindow("Example Gray");
cvDestroyWindow("Example Pyr");
cvDestroyWindow("Example Canny");
}
ch2_ex2_9: Camera: Preview & Capture
#include "cv.h"
#include "highgui.h" int main( int argc, char** argv ) {
cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE );
CvCapture* capture;
if (argc==) {
capture = cvCreateCameraCapture( );
} else {
capture = cvCreateFileCapture( argv[] );
}
assert( capture != NULL ); IplImage* frame;
while() {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2_9", frame );
char c = cvWaitKey(4);
if( c == ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2_9" );
}
ch2_ex2_10: 写入视频文件
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <iostream> using namespace std; // Convert a video to grayscale
// argv[1]: input video file
// argv[2]: name of new output file
// //#define NOWRITE 1; //Turn this on (removed the first comment out "//" if you can't write on linux main( int argc, char* argv[] ) {
cvNamedWindow( "Example2_10", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Log_Polar", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture( "/home/unsw/test.avi" );
if (!capture){
return -;
}
IplImage* bgr_frame;
double fps = cvGetCaptureProperty (
capture,
CV_CAP_PROP_FPS
);
printf("fps=%d\n",(int)fps); CvSize size = cvSize(
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT)
); printf("frame (w, h) = (%d, %d)\n",size.width,size.height);
#ifndef NOWRITE
CvVideoWriter* writer = cvCreateVideoWriter( // On linux Will only work if you've installed ffmpeg development files correctly,
"/home/unsw/test_out.avi", // otherwise segmentation fault. Windows probably better.
CV_FOURCC('D','X','',''),
fps,
size
);
#endif
IplImage* logpolar_frame = cvCreateImage(
size,
IPL_DEPTH_8U, ); IplImage* gray_frame = cvCreateImage(
size,
IPL_DEPTH_8U, ); while( (bgr_frame=cvQueryFrame(capture)) != NULL ) {
cvShowImage( "Example2_10", bgr_frame );
cvConvertImage( //We never make use of this gray image
bgr_frame,
gray_frame,
CV_RGB2GRAY
);
cvLogPolar( bgr_frame, logpolar_frame, //This is just a fun conversion the mimic's the human visual system
cvPoint2D32f(bgr_frame->width/,
bgr_frame->height/),
,
CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );
cvShowImage( "Log_Polar", logpolar_frame );
//Sigh, on linux, depending on your ffmpeg, this often won't work ...
#ifndef NOWRITE
cvWriteToAVI( writer, logpolar_frame );
#endif
char c = cvWaitKey();
if( c == ) break;
}
#ifndef NOWRITE
cvReleaseVideoWriter( &writer );
#endif
cvReleaseImage( &gray_frame );
cvReleaseImage( &logpolar_frame );
cvReleaseCapture( &capture );
}
[OpenCV] Install openCV in Qt Creator的更多相关文章
- [OpenCV] Install OpenCV 3.3 with DNN
OpenCV 3.3 Aug 3, 2017 OpenCV 3.3 has been released with greatly improved Deep Learning module and l ...
- [OpenCV] Install OpenCV 3.4 with DNN
目标定位 一.开始全面支持 Tensorflow OpenCV3.4 新功能 当前最新进展OpenCV 3.4 dev:https://github.com/opencv/opencv/tree/ma ...
- Install OpenCV 3.0 and Python 2.7+ on OSX
http://www.pyimagesearch.com/2015/06/15/install-OpenCV-3-0-and-Python-2-7-on-osx/ As I mentioned las ...
- Install OpenCV 3.0 and Python 2.7+ on Ubuntu
为了防止原文消失或者被墙,转载留个底,最好还是去看原贴,因为随着版本变化,原贴是有人维护升级的 http://www.pyimagesearch.com/2015/06/22/install-Open ...
- QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
由于项目开发的原因,需要配置QT creator+OpenCV2.4.2+MinGW开发环境,现对配置方法做如下总结: 1. 下载必备软件 QT SDK for Open Source C++ de ...
- QT creator中使用opencv
最近要用到opencv做图像方面的东西,网上很多是用VS加opencv,但自己对VS不怎么喜欢,想用QT Creator.在网上搜索了很多资料,终于花了一天的时间,在QT Creator上能使用ope ...
- OpenCV编译以及QT Creator配置
OpenCV编译以及QT Creator配置 在进行编译前,需下载以下工具和源码: CMake ---- 用于编译: 下载地址; https://cmake.org/ 安装在D:\Program Fi ...
- Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置
2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...
- QT creator中使用opencv采集摄像头信息
之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息.故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息. 打开QTcreator,新建一个w ...
随机推荐
- [IOS]IOS UI指南
[IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...
- spring4 security 4 +websocket 实现单点登录
测试地址:http://sms.reyo.cn/ 帐号:aa 密码:123456 先看一下效果图: spring4 security 4 实现单点登录,而websocket 实现单点的下线通知
- JavaMail发送邮件时判断发送结果1.5.x
经常有用户在平台乱注册帐号,系统得自动清理.现在要判断一下邮件是否正确少了很多垃圾注册用户了. 测试 http://sms.reyo.cn/user/register 感谢您的反溃信息!!! 程序代码 ...
- A Brief History of Scaling LinkedIn
原文地址 LinkedIn started in 2003 with the goal of connecting to your network for better job opportuniti ...
- Spectrum to XYZ to sRGB
如何将频谱响应转换为对应的RGB显示值: 首先要在频率功率分布(SPD)曲线的基础上,分别使用X/Y/Z三个频率匹配曲线(spectral matching curves,又名CIE XYZ Colo ...
- 使用6to5,让今天就来写ES6的模块化开发!
http://es6rocks.com/2014/10/es6-modules-today-with-6to5/?utm_source=javascriptweekly&utm_medium= ...
- 第50讲:Scala中Variance变化点
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败
今天打开网站时,突然报这个错误,平时都好好的 Cannot open database "JMECC" requested by the login. The login fail ...
- Eclipse调试时Application XXX is waiting for the debugger to attach的提示
原文链接: http://blog.csdn.net/star_huang/article/details/7678845 最近Eclipse调试时总是出现Application XXX is wa ...
- check member function
template<typename T> struct has_member_foo11 { private: template<typename U> static auto ...