專案可行性研究報告目錄
可行性分析報告 1.1 專案簡介
1.2 對系統的分析
1.3 技術可行性分析 1.3.1 風險分析 1.3.2 資源分析 1.3.3 技術分析
1.4 經濟可行性分析 1.5 社會因素可行性分析
1.6 可供選擇的方案 1.6.1 方案1 1.6.2 方案2 1.6.3 方案3
可行性分析報告
1.1 專案簡介
1.1.1 專案目標
專案使用樂鑫ESP32開發板,帶8M PSRM,使用ov2640影像處理模塊,達成WEB實時視頻監控系統的目標,系統背景為安保場合下的人臉識別監控,系統旨在用軟體工程的方法(然而其實是軟硬體開發,但我只會軟工的方法論233)科學合理地為安保需求提供一個人臉識別實時監控的軟體+硬體管理解決方案,
1.1.2 系統描述與功能
實時視頻監控系統包括但不限于:影像處理模塊實時采集視頻資料,人臉識別演算法識別,web實時監控,
影像處理模塊實時采集視頻資料:獲得實時動態的視頻信號;人臉識別演算法識別:從視頻流中檢測出人臉;web實時監控:通過網頁實時監控,
1.2 對系統的分析
1.2.1 處理流程和資料流程
<style>#mermaid-svg-TbKzxo4C18FuWAq4 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .label text{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .node rect,#mermaid-svg-TbKzxo4C18FuWAq4 .node circle,#mermaid-svg-TbKzxo4C18FuWAq4 .node ellipse,#mermaid-svg-TbKzxo4C18FuWAq4 .node polygon,#mermaid-svg-TbKzxo4C18FuWAq4 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-TbKzxo4C18FuWAq4 .node .label{text-align:center;fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .node.clickable{cursor:pointer}#mermaid-svg-TbKzxo4C18FuWAq4 .arrowheadPath{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-TbKzxo4C18FuWAq4 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-TbKzxo4C18FuWAq4 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-TbKzxo4C18FuWAq4 .edgeLabel rect{opacity:0.9}#mermaid-svg-TbKzxo4C18FuWAq4 .edgeLabel span{color:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-TbKzxo4C18FuWAq4 .cluster text{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-TbKzxo4C18FuWAq4 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-TbKzxo4C18FuWAq4 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-TbKzxo4C18FuWAq4 .actor-line{stroke:grey}#mermaid-svg-TbKzxo4C18FuWAq4 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-TbKzxo4C18FuWAq4 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .sequenceNumber{fill:#fff}#mermaid-svg-TbKzxo4C18FuWAq4 #sequencenumber{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .messageText{fill:#333;stroke:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-TbKzxo4C18FuWAq4 .labelText,#mermaid-svg-TbKzxo4C18FuWAq4 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-TbKzxo4C18FuWAq4 .loopText,#mermaid-svg-TbKzxo4C18FuWAq4 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-TbKzxo4C18FuWAq4 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-TbKzxo4C18FuWAq4 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-TbKzxo4C18FuWAq4 .noteText,#mermaid-svg-TbKzxo4C18FuWAq4 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-TbKzxo4C18FuWAq4 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-TbKzxo4C18FuWAq4 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-TbKzxo4C18FuWAq4 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-TbKzxo4C18FuWAq4 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .section{stroke:none;opacity:0.2}#mermaid-svg-TbKzxo4C18FuWAq4 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-TbKzxo4C18FuWAq4 .section2{fill:#fff400}#mermaid-svg-TbKzxo4C18FuWAq4 .section1,#mermaid-svg-TbKzxo4C18FuWAq4 .section3{fill:#fff;opacity:0.2}#mermaid-svg-TbKzxo4C18FuWAq4 .sectionTitle0{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .sectionTitle1{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .sectionTitle2{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .sectionTitle3{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-TbKzxo4C18FuWAq4 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .grid path{stroke-width:0}#mermaid-svg-TbKzxo4C18FuWAq4 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-TbKzxo4C18FuWAq4 .task{stroke-width:2}#mermaid-svg-TbKzxo4C18FuWAq4 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .taskText:not([font-size]){font-size:11px}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-TbKzxo4C18FuWAq4 .task.clickable{cursor:pointer}#mermaid-svg-TbKzxo4C18FuWAq4 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-TbKzxo4C18FuWAq4 .taskText0,#mermaid-svg-TbKzxo4C18FuWAq4 .taskText1,#mermaid-svg-TbKzxo4C18FuWAq4 .taskText2,#mermaid-svg-TbKzxo4C18FuWAq4 .taskText3{fill:#fff}#mermaid-svg-TbKzxo4C18FuWAq4 .task0,#mermaid-svg-TbKzxo4C18FuWAq4 .task1,#mermaid-svg-TbKzxo4C18FuWAq4 .task2,#mermaid-svg-TbKzxo4C18FuWAq4 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutside0,#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutside2{fill:#000}#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutside1,#mermaid-svg-TbKzxo4C18FuWAq4 .taskTextOutside3{fill:#000}#mermaid-svg-TbKzxo4C18FuWAq4 .active0,#mermaid-svg-TbKzxo4C18FuWAq4 .active1,#mermaid-svg-TbKzxo4C18FuWAq4 .active2,#mermaid-svg-TbKzxo4C18FuWAq4 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-TbKzxo4C18FuWAq4 .activeText0,#mermaid-svg-TbKzxo4C18FuWAq4 .activeText1,#mermaid-svg-TbKzxo4C18FuWAq4 .activeText2,#mermaid-svg-TbKzxo4C18FuWAq4 .activeText3{fill:#000 !important}#mermaid-svg-TbKzxo4C18FuWAq4 .done0,#mermaid-svg-TbKzxo4C18FuWAq4 .done1,#mermaid-svg-TbKzxo4C18FuWAq4 .done2,#mermaid-svg-TbKzxo4C18FuWAq4 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-TbKzxo4C18FuWAq4 .doneText0,#mermaid-svg-TbKzxo4C18FuWAq4 .doneText1,#mermaid-svg-TbKzxo4C18FuWAq4 .doneText2,#mermaid-svg-TbKzxo4C18FuWAq4 .doneText3{fill:#000 !important}#mermaid-svg-TbKzxo4C18FuWAq4 .crit0,#mermaid-svg-TbKzxo4C18FuWAq4 .crit1,#mermaid-svg-TbKzxo4C18FuWAq4 .crit2,#mermaid-svg-TbKzxo4C18FuWAq4 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-TbKzxo4C18FuWAq4 .activeCrit0,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCrit1,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCrit2,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-TbKzxo4C18FuWAq4 .doneCrit0,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCrit1,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCrit2,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-TbKzxo4C18FuWAq4 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-TbKzxo4C18FuWAq4 .milestoneText{font-style:italic}#mermaid-svg-TbKzxo4C18FuWAq4 .doneCritText0,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCritText1,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCritText2,#mermaid-svg-TbKzxo4C18FuWAq4 .doneCritText3{fill:#000 !important}#mermaid-svg-TbKzxo4C18FuWAq4 .activeCritText0,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCritText1,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCritText2,#mermaid-svg-TbKzxo4C18FuWAq4 .activeCritText3{fill:#000 !important}#mermaid-svg-TbKzxo4C18FuWAq4 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-TbKzxo4C18FuWAq4 g.classGroup text .title{font-weight:bolder}#mermaid-svg-TbKzxo4C18FuWAq4 g.clickable{cursor:pointer}#mermaid-svg-TbKzxo4C18FuWAq4 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-TbKzxo4C18FuWAq4 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-TbKzxo4C18FuWAq4 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-TbKzxo4C18FuWAq4 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-TbKzxo4C18FuWAq4 .dashed-line{stroke-dasharray:3}#mermaid-svg-TbKzxo4C18FuWAq4 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 .commit-id,#mermaid-svg-TbKzxo4C18FuWAq4 .commit-msg,#mermaid-svg-TbKzxo4C18FuWAq4 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-TbKzxo4C18FuWAq4 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-TbKzxo4C18FuWAq4 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-TbKzxo4C18FuWAq4 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-TbKzxo4C18FuWAq4 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-TbKzxo4C18FuWAq4 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-TbKzxo4C18FuWAq4 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-TbKzxo4C18FuWAq4 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-TbKzxo4C18FuWAq4 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-TbKzxo4C18FuWAq4 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-TbKzxo4C18FuWAq4 .edgeLabel text{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-TbKzxo4C18FuWAq4 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-TbKzxo4C18FuWAq4 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-TbKzxo4C18FuWAq4 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-TbKzxo4C18FuWAq4 .note-edge{stroke-dasharray:5}#mermaid-svg-TbKzxo4C18FuWAq4 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-TbKzxo4C18FuWAq4 .error-icon{fill:#522}#mermaid-svg-TbKzxo4C18FuWAq4 .error-text{fill:#522;stroke:#522}#mermaid-svg-TbKzxo4C18FuWAq4 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-TbKzxo4C18FuWAq4 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-TbKzxo4C18FuWAq4 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-TbKzxo4C18FuWAq4 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-TbKzxo4C18FuWAq4 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-TbKzxo4C18FuWAq4 .marker{fill:#333}#mermaid-svg-TbKzxo4C18FuWAq4 .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style>
<style>#mermaid-svg-TbKzxo4C18FuWAq4 {
color: rgba(0, 0, 0, 0.75);
font: ;
}</style>
視頻流
開發板
ov2640
ESP32
data
人臉識別
web監控
1.2.2 說明
維護:系統的維護存在維護期限;人員:俺;設備:ESP32集成開發板,ov2640影像傳感器,接線等;個人電腦,手機,作業系統:Windows 10;編譯器:Microsoft visual studio code;語言:C;局限性:俺經驗不足,
1.3 技術可行性分析
1.3.1 風險分析
根據網上教程可以在規定時間內完成開發,
1.3.2 資源分析
硬體資源:如1.2.2說明,均在經費滿足的條件下獲得;軟體資源:串口除錯軟體、網路除錯軟體均可下載,
1.3.3 技術分析
我們使用C#語言搭配資料庫實作,之前的專案有過與此相關的成功經驗,目前此專案所需要的技術均已成熟,實作難度不高,
1.4 經濟可行性分析
開發者所需軟硬體設備都能達到要求,成本在預算范圍內; 用戶使用只需接入互聯網并登錄軟體界面,無需付出較多成本; 專案可在可接受成本內完成,
1.5 社會因素可行性分析
1.5.1 法律因素
本專案通過設計、編碼、實作來學習,不牽扯侵權等責任問題,并且在系統運行生命周期不會產生法律問題,不會與現有法律相抵觸, 中華人民共和國現行法律通過計算機軟體著作權相關法案保護軟體開發者的權利,系統為學生獨立開發,目的為學習使用,受法律合法保護,
根據2002年1月1日《計算機軟體保護條例》規定:為了學習和研究軟體內含的設計思想和原理,通過安裝、顯示、傳輸或者存盤軟體等方式使用軟體的,可以不經軟體著作人許可,不向其支付報酬,
本專案僅用于學習,交流,目前不用于商業用途,
1.5.2 用戶使用可行性
系統完成后交測驗使用,用戶針對性強,且可通過系統的使用培訓使得用戶掌握本系統的使用方法,界面友好滿足黃金三原則,功能簡介,預計學習掌握較為容易,
1.6 可供選擇的方案
下面提供一些可以選擇完成本專案的方案,
1.6.1 方案1
基于visual studio code 建立C語言專案,編程后燒錄程式至ESP32開發板,使用人臉識別演算法,開發網頁實時監控視頻,
選擇該方案 該方案優點 ① 網頁操作簡單,用戶容易掌握; ② C語言簡單易懂,兼容性好,對開發者來說容易使用; ③ 開發難度較低,開發成本低; ④ 系統的維護開銷小,
1.6.2 方案2
基于arduino的專案,使用人臉識別,開發桌面應用軟體實時監控視頻,
不選擇該方案 該方案缺點: ① 熟悉度較低,前期學習作業任務繁重,耗時長; ② 雖然開發了監控軟體,但相比網頁,下載與安裝更麻煩,還有平臺限制,而網頁不限制用戶端; ③ 從我的整體水平來看,做不出來XD; ④ 專案的維護更加困難,
1.6.3 方案3
直接購買,
不選擇該方案 該方案缺點: ① 購買費用高昂; ② 市面上的大型系統相對于簡單需求情景顯得大材小用; ③ 維護困難且維護費用昂貴; ④本專案目的是學習,購買則失去了意義,