delphi 利用简易摄像头编写监控的程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 利用简易摄像头编写监控的程序相关的知识,希望对你有一定的参考价值。

用delphi编写了一个监控程序,监视界面图像为纯黑色无图像显示,但可以生成录制文件,且可用播放器播放,有图像,这是为什么?

可能是监视界面图像需要刷新吧,每个时刻都在变化,需要调用RePaint方法。 参考技术A 不知道你用的是什么控件,
从你上面所述,可能是摄像头没有打开(调用成功)

Java(随笔)——利用HTML,CSS,JavaScript,JQuery编写的简易计算器

一.利用刚学过的前端知识做一个简易的计算器
里边使用到了HTML,CSS,JavaScript以及JQuery的知识代码如下:
(1)利用CSS设计了计算器外形样式;
(2)利用JavaScript实现了建议计算器的功能;
代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>简易计算器</title>
        <link rel="stylesheet" href="css/counter.css" />
        <script type="text/javascript" src="js/counter.js" ></script>
        <style>
            #mian{
                width: 100%;
                height:660px;
                background-image: url(img/1TX761XVUM10.jpg);
                background-size: 100%  100%;
                background-repeat: no-repeat;
            }
            /*提示框设计*/
            #tishikuang{
                width:90px;
                height: 520px;
                margin-left: 30px;
                margin: 30px;
                border: 2px red solid;
                float: left;
                background: yellowgreen;
                font-family: 微软雅黑;
                font-size: 15px;
                color: red;
                display: block;
            }
            p{
                font-size: 16px;
                color: black;
            }
            /*外部背景*/
            #wai{
                width: 1000px;
                height: 580px;
                border: 15px black solid;
                margin-left:120px;
                background-image: url(img/QQ图片20180315182956.jpg);
                background-size: 100%  100%;
                background-repeat: no-repeat;
                box-shadow: 4px 4px rgb(40,40,40);
                float: left;
            }
            /*手机外观边框*/
            #jisuanqi{
                width: 300px;
                height: 540px;
                border: 1.5px #E1A79C solid;
                margin-top: 30px;
                margin-left: 300px;
                float: left;
                display: none;
                border-radius:20px ;
                background: white;
                box-shadow: 2.5px 2.5px #E1A79C;
            }
            /*设置启动手机按钮外框*/
            #tubiao{
                width: 50px;
                height: 50px;
                border: 0px black solid;
                float: left;
                margin-left: 112px;
                margin-top: 78px;
            }
            /*设置启动手机软件图标属性*/
            #tupian{
                width: 30px;
                height: 29px;
                border: 0px black solid;
                margin-left: 10px;
                background-image: url(img/timg.jpg);
                background-size: 100% 100%;
                background-repeat: no-repeat;
            }
            /*设置启动手机软件图标下文字属性*/
            #wenzi{
                width: 50px;
                height: 19px;
                border: 0px black solid;
                font-size: 10px;
                color: #DCDCDC;
                text-align: center;
                line-height: 19px;
            }
            /*设置手机内边框属性*/
            #pinbian{
                width: 269px;
                height: 450px;
                border: 0.5px black solid;
                margin-left: 15px;
                margin-top: 35px;
                background-color: rgb(38,38,38);
            }
            /*手机喇叭设计*/
            #laba{
                width: 60px;
                height: 5px;
                border: 1.5px gray solid;
                border-radius: 15px;
                margin-top: 13px;
                margin-left: 10px;
                background: gray;
                float: left;
            }
            /*设计手机喇叭摄像头*/
            #shexiang{
                width: 7px;
                height: 7px;
                border: 1.5px gray solid;
                border-radius: 7px;
                background:gray;
                margin-left: 104px;
                margin-top: 13px;
                float: left;
            }
            /*手机菜单按钮外框设计*/
            #caidan{
                width: 30px;
                height: 30px;
                border: 1px gray solid;
                border-radius: 30px;
                background:#FFEFD5;
                margin-top: 10px;
                margin-left: 135px;
            }
            /*手机菜单按钮内框设计*/
            #caidannei{
                width: 15px;
                height: 15px;
                border: 1px gray solid;
                border-radius: 15px;
                background: #FFEFD5;
                margin-top: 6.2px;
                margin-left: 6.2px;
            }
            /*时间显示栏设计*/
            #shijian{
                width: 271px;
                height: 18px;
                border: 0px black solid;
                background-color: rgb(33,33,33);
                background-size: 101% 100%;
                background-repeat: no-repeat;
                font-size: 12px;
                color: white;
                text-align: center;
                line-height: 18px;
                display: none;  /*为了锁屏显示*/
            }
            /*手机桌面设计*/
            #zhuomian{
                width: 269px;
                height: 430px;
                border: 1px rgb(33,33,33) solid;
                background-image: url(img/QQ图片20180315215937_万能看图王.png);
                background-size: 101% 100%;
                background-repeat: no-repeat;
                display: none;  /*为了锁屏显示*/
            }
            /*设置手机计算器软件图标属性*/
            #jipian{
                width: 25px;
                height: 22px;
                border: 0px black solid;
                margin-left: 10px;
                border-radius: 15px;
                background-image: url(img/timg.jpg);
                background-size: 100% 100%;
                background-repeat: no-repeat;
                margin-left: 220px;
                margin-top: 152px;
            }
            /*设置手机计算器软件图标下文字属性*/
            #jizi{
                width: 50px;
                height: 19px;
                border: 0px black solid;
                font-size: 8px;
                color: #FF7F50;
                text-align: center;
                line-height: 19px;
                margin-left: 210px;
                margin-top: 4px;
            }
            #jizhuomian{
                width: 269px;
                height: 430px;
                border: 0px black solid;
                background: red;
                margin-left: -1px;
                display: none;
            }
            input{
                border-style:none ;
                height: 45px;
                font-size: 20px;
                color: black;
                background: grey;
            }
            #show_number1{
                width: 119px;
                float: left;
            }
            #show_yusuanfu{
                width: 25px;
                float: left;
                text-align: center;
                line-height: 25px;
            }
            #show_number2{
                width: 119px;
                float: left;
                text-align: end;
            }
            #show_denghao{
                width: 25px;
                float: left;
                text-align: center;
                line-height: 25px;
            }
            #show_jieguo{
                width: 240px;
                float: left;
                text-align: end;
            }
            #jiwai{
                width: 269px;
                height: 384px;
                border: 0px gray solid;
                font-size: 22px;
                background: #D3D3D3;
            }
            .qinqchu{
                display: none;
            }
            #denghao{
                width: 105px;
                height: 45px;
                border: 0px black solid;
                border-radius: 45px;
                font-size: 18px;
                background: #6B8E23;
                float: left;
                margin-left: 20px;
                margin-top: 18px;
                text-align: center;
                line-height: 45px;
                box-shadow: 2px 2px grey;
            }
            #jiwai>div{
                width: 46px;
                height: 45px;
                border: 0px black solid;
                border-radius: 45px;
                font-size: 18px;
                background: #D3D3D3;
                float: left;
                margin-left: 16px;
                margin-top: 18px;
                text-align: center;
                line-height: 45px;
                box-shadow: 2px 2px grey;
            }
            #jiwai>div:active{
                background: #9370D8;
            }
            #denghao:active{
                background: #FF4500;
            }
            /*#xiakaung{
                width:300px;
                height: 55px;
                margin-left: 550px;
                border: 1px rgb(40,40,40) solid;
                background: black;
                box-shadow: 3px 3px rgb(45,45,45);
            }*/
        </style>
        <script src="js/jquery-1.10.1.js"></script>
    </head>
    <body>
        <!--背景桌面-->
        <div id="mian">
            <div id="tishikuang">
                使用时请单击电脑界面的网络手机按钮,弹出手机界面(再次单机会关闭网络手机界面),
                单机网络手机主菜单按钮(下方圆键),解除手机锁屏(再次单机会继续锁屏),单机手机界面计算器按钮,打开计算器,
                进行四则运算 点击提示框可以隐藏提示框.
                <p>作者:齐涛</p>
            </div>
            <!--外层布局-->
            <div id="wai">
                <!--设计点击开启手机-->
                <div id="tubiao">
                    <div id="tupian"></div>
                    <div id="wenzi">网络手机</div>
                </div>
                <!--计算器外框,以手机形式展示-->
                <div id="jisuanqi">
                    <!--手机前摄像头设计-->
                    <div id="shexiang"></div>
                    <!--手机喇叭设计-->
                    <div id="laba"></div>
                    <!--手机屏幕边框设计-->
                    <div id="pinbian">
                        <!--手机间框设计-->
                        <div id="shijian">时间显示</div>
                        <div style="clear: both;">
                            <!--以上浮动清除-->
                        </div>
                        <!--手机桌面背景-->
                        <div id="zhuomian">
                            <!--设置手机计算器背景-->
                                <div id="jizhuomian">
                                    <input type="text" value="0" id="show_number1" disabled="disabled"/>
                                    <input type="text" value="" id="show_yusuanfu" disabled="disabled"/>
                                    <input type="text" value="0" id="show_number2" disabled="disabled"/>
                                    <div style="clear: both;">
                                        <!--以上浮动清除-->
                                    </div>
                                     <input type="text" value="=" id="show_denghao" disabled="disabled"/>
                                    <input type="text" value="" id="show_jieguo" disabled="disabled"/>
                                    <div id="jiwai">
                                        <div id="clean">C</div>
                                        <div id="del">退格</div>
                                        <div>%</div>
                                        <div class="yunsuanfu">/</div>
                                        <div class="qinqchu" style="clear: both;">
                                            <!--以上浮动清除-->
                                        </div>
                                        <div class="number">7</div>
                                        <div class="number">8</div>
                                        <div class="number">9</div>
                                        <div class="yunsuanfu">*</div>
                                        <div class="qinqchu" style="clear: both;">
                                            <!--以上浮动清除-->
                                        </div>
                                        <div class="number">4</div>
                                        <div class="number">5</div>
                                        <div class="number">6</div>
                                        <div class="yunsuanfu">-</div>
                                        <div class="qinqchu" style="clear: both;">
                                            <!--以上浮动清除-->
                                        </div>
                                        <div class="number">1</div>
                                        <div class="number">2</div>
                                        <div class="number">3</div>
                                        <div class="yunsuanfu">+</div>
                                        <div class="qinqchu" style="clear: both;">
                                            <!--以上浮动清除-->
                                        </div>
                                        <div class="number">0</div>
                                        <div class="number">.</div>
                                        <span id="denghao">=</span>
                                    </div>
                                </div>
                                <!--设置手机计算器软件按钮背景-->
                                <div id="jipian"></div>
                                <div id="jizi">计算器</div>
                        </div>
                    </div>
                    <!--菜单按钮外框设计-->
                    <div id="caidan">
                    <!--菜单按钮内框设计-->
                        <div id="caidannei"></div>
                    </div>
                </div>
            </div>
            <div class="qinqchu" style="clear: both;">
                <!--以上浮动清除-->
            </div>
        <!--    电脑下框设计
            <div id="xiakaung"></div>-->
        </div>

    </body>
    <!--手机与手机计算器逻辑-->
    <script>
        /*//1.设置点击事件,点击软件图标,弹出手机
        var tubaio=document.getElementById("tubiao");//获取启动手机按钮图标对象
        var jisuanqi=document.getElementById("jisuanqi");//获取手机界面对象
        tubaio.onclick=function(){
            jisuanqi.style.cssText="display: block";//解除手机桌面隐藏
        }*/

        //1.(01)(JQuery编写打开关闭手机计算器框设置)
        $("#tubiao").click(function(){
            if ($("#jisuanqi").css("display")=="none"){
                $("#jisuanqi").show();
            } else{
                $("#jisuanqi").hide();
            }
        });

        //2.设置时间显示,自动更新时间
        function show_time() {
            //获取时间栏内容
            var shijian=document.getElementById("shijian");
            //获取当前时间
            var dateTime=new Date().toLocaleString();
            //用当前时间替换div内容
            shijian.innerHTML=dateTime;
        }
        show_time();//先手动调show_time方法
        window.setInterval("show_time()",1000);//编写定时器,每1000ms调用一次show_time方法

        //3.设置手机计算器点击事件,击软件图标,弹出计算器
        var jipian=document.getElementById("jipian");//获取手机启动计算器按钮图标id
        var jizhuomian=document.getElementById("jizhuomian");//获取计算器桌面id
        jipian.onclick=function(){
            jizhuomian.style.cssText="display: block";//解除计算器界面隐藏
        }
        //

        //4.锁屏解除操作,点击主菜单按钮,显示手机桌面(原生javascript代码编写)
    /*  var caidan=document.getElementById("caidan");//获取手机主菜单启动按钮图标id
        var shijian=document.getElementById("shijian");//获取手机时间栏id
        var zhuomian=document.getElementById("zhuomian");//获取手机桌面id
        caidan.onclick=function(){
            shijian.style.cssText="display: block";//解除手机时间栏隐藏
            zhuomian.style.cssText="display: block";//解除手机桌面栏隐藏
        }*/

        //5.锁屏操作(利用JQuery写方代码)
        //点击手机主菜单按钮:
        //(1)当display属性值为none时,调用show()方法 展示手机桌面(解除锁屏)
        //(2)当display属性值为block时,调用hide()方法隐藏手机桌面(启动锁屏)
        $("#caidan").click(function(){
            if ($("#shijian").css("display")=="none"){
                $("#shijian").show();
                $("#zhuomian").show();
            } else{
                $("#shijian").hide();
                $("#zhuomian").hide();
            }
        });
        //6.设置隐藏提示框(点击提示框,提示框消失)
        $("#tishikuang").click(function(){
            if ($("#tishikuang").css("display")=="block"){
                $("#tishikuang").hide();
            }
        });

        //7.计算器计算逻辑
        //(1)定义三个变量 用来保存,用户输入的 第一个数字,第二个数字,和运算符
        var numValue1 = "";
        var numValue2 = "";
        var czf = "";
        var show_number1 = document.getElementById("show_number1");
        var show_number2 = document.getElementById("show_number2");
        var show_yunsuuan = document.getElementById("show_yusuanfu");
        var show_jieguo = document.getElementById("show_jieguo");
        var clean = document.getElementById("clean");
        var del = document.getElementById("del");
        var denghao = document.getElementById("denghao");
        //(2)获取所有的数字键
        var numbers = document.getElementsByClassName("number");
        for(var i = 0; i < numbers.length; i++) {
                numbers[i].onclick = function() {
                    //计算器处理小数点的问题
                    if(this.innerHTML == ".") {
                        //判断这个numValue1 里面有没有点,并且点不能出现在首位
                        if(numValue1.indexOf(".") == -1 && numValue1.length >= 1) {
                            //我们点击了数字显示到文本框中
                            numValue1 += this.innerHTML;
                            //展示一下
                            show_number1.value = numValue1;
                        }

                    } else {
                        //我们点击了数字显示到文本框中
                        numValue1 += this.innerHTML;
                        //展示一下输入数字到文本框中
                        show_number1.value = numValue1 * 1;//去除首尾的无效0
                    }

                }

            }
            //(3)给所有的操作符号 设置点击事件
            var opers = document.getElementsByClassName("yunsuanfu");
            for(var i = 0; i < opers.length; i++) {

                opers[i].onclick = function() {
                    //在这里处理四则
                    if(numValue2 == "") {
                        //当你点击了操作符之后,我们把numValue1,给numValue2来保存
                        //把numValue1清空掉 然后让他去接收第二个数字
                        numValue2 = numValue1;
                        numValue1 = "";

                        //保存操作符
                        czf = this.innerHTML;
                        show_yunsuuan.value = czf;//去除首尾的无效0
                        show_number2.value=numValue1;
                    } else {
                        //处理四则运算的逻辑:把前两次个数的运算结果算出来,再赋值给numValue2
                        //然后把numValue1 清空,准备接收下一个数字
                        funResult();
                        //保存操作符
                        czf = this.innerHTML;
                        show_yunsuuan.value = czf;//去除首尾的无效0
                        show_number2.value=numValue1;
                    }

                }

            }
            //(4)处理清空键的逻辑
            clean.onclick = function() {
                //把所有的设置归置为初始状态
                numValue1 = "";
                numValue2 = "";
                czf = "";
                show_number1.value = "0";
                show_number2.value = "0";
                show_yunsuuan.value = "";
                show_jieguo.value="";
            }
            //(5)处理退格键
            del.onclick = function() {
                if(numValue1.length > 1) {
                    numValue1 = numValue1.substring(0, numValue1.length - 1);
                    show_number2.value = numValue1;
                    show_number1.value = numValue2;

                } else if(numValue1.length == 1) {

                    numValue1 = "";
                    numValue2 = "";
                    czf = "";
                    show_number1.value = "0";
                    show_number2.value = "0";
                    show_yunsuuan.value = "";
                    show_jieguo.value="";

                }

            }
            //(6)处理等号逻辑
            denghao.onclick = function() {
                funResult();
            }

            function funResult() {
                if(numValue1 != "") {
                    var one = Number(numValue2);
                    var two = Number(numValue1);
                    var jg = "0";
                    switch(czf) {
                        case "+":
                            jg = one + two;
                            break;
                        case "-":
                            jg = one - two;
                            break;
                        case "*":
                            jg = one * two;
                            break;
                        case "/": //处理除数为0
                            if(two == 0) {
                                alert("除数不能为0");
                                numValue1 = "";
                                numValue2 = "";
                                czf = "";
                                show_number.value = "0";

                            } else {

                                jg = one / two;
                            }

                            break;
                    }
                    var n = new Number(jg);
                    var finalR = n.toFixed(4);
                    numValue2 = finalR; //把结果再赋值给numValue2
                    numValue1 = ""; //清空numValue1 
                    //去掉首尾无效的0 给值*1 即可
                    show_jieguo.value =numValue2 * 1;                   
                }

            }
    </script>
</html>

运行结果展示:

技术分享图片
点击左边的提示框:

技术分享图片
点击屏幕上的网络手机图标:

技术分享图片
点击手机圆形主菜单按钮:
技术分享图片

点击手机上的计算器按钮:
技术分享图片

例输入23+45求和:

技术分享图片
点击清空:

技术分享图片

再例如(2+3)*5:
技术分享图片

小数点运算23.4*45.6:

技术分享图片
输入788:
技术分享图片
点击退格:
技术分享图片

点击主菜单键关机
技术分享图片

点击网络手机关闭计算器:
技术分享图片

            【简易计算器制作完毕】

以上是关于delphi 利用简易摄像头编写监控的程序的主要内容,如果未能解决你的问题,请参考以下文章

如何控制用Delphi摄像头

基于阿里云物联网平台实现的简易出入监控

基于阿里云物联网平台实现的简易出入监控

后台程序获取交通摄像头的方法

智能家居代码构建编写简单工厂模式树莓派摄像头视频监控功能实现

delphi xe10 麦克风摄像头操作