qt做的乙個動態實時監控專案

2021-06-21 07:08:55 字數 3444 閱讀 6233

做了乙個攝像頭監控的專案

環境: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...