做了乙個攝像頭監控的專案
環境:qtcreator-2.5.2+qt4.7.3+mingw+opencv2.1(裝在c盤根目錄下,在專案中引入的時候有用)
功能介紹:監控筆記本攝像頭,通過opencv的函式開啟攝像頭,用幀差分演算法判斷監控的區域有沒有發生變化,也就是有沒有物體進入監控區域,當監控的區域發生變化時,將這一幀傳送給伺服器端
之前環境不允許,一直用一台電腦既當伺服器又當客戶端,挺成功的,結果兩台機子執行的時候就出錯了,坑爹,後來身邊沒有別的機子有做這個專案的環境,所以一直沒有找到為什麼兩台機子執行時出錯的原因,今天改了改**,不知道現在能不能成功,**寫的不規範,見諒
目錄結構:
在qtcalv2.pro中新增
qt += core gui
qt += network
includepath += c:\opencv2.1\include\opencv
libs += c:\opencv2.1\lib\highgui210.lib \
c:\opencv2.1\lib\cxcore210.lib \
c:\opencv2.1\lib\cv210.lib
新增opencv庫,因為涉及到網路所以加上
qt += network
main.cpp中新增
#include
main函式中新增
qtextcodec
::setcodecfortr
(qtextcodec
::codecforlocale
());
widget.h檔案
#ifndef widget_h
#define widget_h
#include #include #include #include #include #include #include #include #include namespace ui
class widget : public qwidget
;#endif // widget_h
widget.cpp
#include "widget.h"
#include "ui_widget.h"
widget::widget(qwidget *parent) :
qwidget(parent),
ui(new ui::widget)
widget::~widget()
void widget::closeevent(qcloseevent *e)
void widget::opencamara()
timer->start(50); // 開始計時,超時則發出timeout()訊號
}void widget::closecamara()
void widget::readframe()
else if(framenum>0)
if (cvmget (frmat,50,i)==0 && notwhite == 1)
}notwhite = 0;
first = 0;
for(i=0;icols);i++)
if (cvmget (frmat,100,i)==0 && notwhite == 1)
}notwhite = 0;
first = 0;
for(i=0;icols);i++)
if (cvmget (frmat,250,i)==0 && notwhite == 1)
}notwhite = 0;
first = 0;
for(i=0;icols);i++)
if (cvmget (frmat,350,i)==0 && notwhite == 1)
}notwhite = 0;
first = 0;
for(i=0;icols);i++)
if (cvmget (frmat,450,i)==0 && notwhite == 1)
}double speed = 0;
if (totalpx > 0)
//qimage image = qimage((unsigned char*)frimg->imagedataorigin, frimg->width,frimg->height, qimage::format_indexed8);
//qimage image = qimage((const uchar*)frame->imagedata, frame->width,
// ui->label_2->setpixmap(qpixmap::fromimage(image));
if(array.size ()!=frame->imagesize)
send();}}
framenum++;
cvcvtcolor (frame,bkimg,cv_bgr2gray);
cvconvert(bkimg,bkmat);
}void widget::send()
}qdebug ()
if (tcpclient->state () == qabstractsocket::unconnectedstate)
void widget::updateclientprogress(qint64 numbytes)
}void widget::displayerror(qabstractsocket::socketerror)
void widget::on_pushbutton_clicked()
widget.ui
<?xml version="1.0" encoding="utf-8"?>
widget00
787499
widget
1010640
480
textlabel
68029075
23
open
68039075
23
close
67020101
161
660430121
19
45 qt::horizontal
71021031
21
670250101
20
68021031
21
編號
680340
7523
send
open
close
textedit
horizontalslider
nolineedit
iplineedit
label_4
label
pushbutton
乙個電網QT專案的開篇
第一次用markdown 好不習慣 感覺教程好多 需要用的時候再學吧 但不得不說csdn的介面和功能都好良心 這個電網軟體的專案已經開始快半年了,然而進展很慢。軟體主要是用 vs 和 qt addin 編寫,初衷是為了自己的知識鞏固以及將自己所學的知識真正鞏固一下。但是苦於自身的懶惰,至今為止還是沒...
如何把乙個Qt專案拆成多個Qt子專案
title 如何把乙個qt專案拆成多個qt子專案 author kagula date 2017 04 27 環境 qt 5.6,qt creator 3.6.1 前言當qt專案在開發過程中變的很大時,需要把它拆成乙個exe和多個dll lib子專案。本文介紹了如何實現這個目的的演示。正文 本文的示...
提公升實時系統實時指標的乙個方法
isolcpus可以使選定的幾個cpu核不參與負載均衡的排程,這樣的話,我們可以在系統啟動的時候,在cmdline中增加如下引數 isolcpus 4,5,6,7 假如我們想保留這四個cpu核的話 這樣的話,系統通常的負載都會跑到系統其他的cpu核,我們保留了這四個核給實時任務。然後,我們可以使用c...