1

我正在开发一个应用程序,我在其中从相机捕获图像并将它们在线流式传输。要捕获图像,我正在使用 opencv 代码。它将图像存储(重写)在服务器上的同一图像文件中。然后该图像在线流式传输。但是,如果流式传输和存储同时发生,则图像会损坏。所以我使用系统锁同步了这些进程。检查每 2 秒重新加载图像的 html 页面检查 img 文件是否具有系统锁定。如果是,那么它不会重新加载图像。因此,要检查文件是否被锁定,我必须在我的 html 文件中放入一些 php 代码。我相信我的代码在语法上是正确的。然而,它没有提供所需的输出。

 <html>

 <head>

 <!--to keep requesting the server new page without displaying the image from the cache pragma
  is used -->
 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">

 <title>YOUR SITE TITLE GOES HERE</title>
 <style type="text/css">
    #imgJSselbox{
        position: absolute;
        margin: 0px;
        padding: 0px;
        visibility: hidden;
        width: 0px;
        height: 0px;
        border: 1px solid #006;
        color: #fff;
        background-image: url(selection_area.gif);
        z-index: 20;
    }
 </style>
 <script type="text/javascript" src="globalvar.js"></script>
 <script language="Javascript">

       var x = 2;
       var y = 1;
       var now;

  function startClock() {
        x = x-y;
        document.form1.clock.value = x;
   <?php
       $fp1=fopen("a.jpg","r");
       $fp2=fopen("b.jpeg","r");
       if(flock($fp1,LOCK_EX|LOCK_NB)==0 && flock($fp2,LOCK_EX|LOCK_NB)==0)
     $x=1;
       else
     $x=0;
    ?>

    var ch;
    ch=<?php echo $x; ?>

     if (x < 1 && ch==1) reload();
    <?php
        $fp1=fopen("a.jpg","r");
        $fp2=fopen("b.jpeg","r");
        flock($fp1,LOCK_UN); 
        flock($fp2,LOCK_UN);
    ?>
    timerID = setTimeout("startClock()", 1000);
   }

   function reload()
   {
        now = new Date();
         <!-- to pass the new image to the src -->
        var camImg = "a.jpg" + "?" + now.getTime();
        document.campicture.src = camImg;
        var crpImg = "b.jpeg" + "?" + now.getTime();
        document.croppic.src = crpImg;  

  x = 2;
        document.form1.clock.value = x; 
    }

    </script>
    <script type="text/javascript" src="image_cropper.js">
    document.form1.x-coord.value=x1;
    document.write(x1);


    </script>

    <script>
    function window.open('im','imgg')
    {
           window.open('im','imgg');
    }
    </script>
    </head>
     <body bgcolor="white" onLoad="startClock()">

    <center>

     <font size=-1>

     <h1>AYS WEBCAM PAGE</h1>

     <h2>This page loads images and refreshes them after every given interval of time keeping
     the same name of the image file</h2><p><br />
<div id="imgJSselbox"></div>
</center>
      <img name="campicture" src="a.jpg" id="testimage" border=1 width=640 height=480
       alt="AYS    
         founder's IMAGE" onClick="getImageCropSelectionPoint
        'testimage',event,document.form1);">
             ====>>ROI==>> 

<img name="croppic" src="b.jpeg" width=320 height=240 alt="cropped_image">
<center>
       <form NAME="form1"action="image_cropper.php" method="POST"><b><font size="-1"
       face="Arial">AutoReload in :==> </font>

        <input TYPE="text" NAME="clock" SIZE="2" VALUE="5"> <font size="-1"
        face="Arial">seconds.</font></b><br />
<br><br><input type="button" value="Crop" onclick= setImageCropAreaSubmit
       ("image_cropper.php",'testimage')><br><br>
       </center>
       <!-- <input type="text" name="x-coord" value=""><br>
 <input type="text" name="y-coord" value=""><br>
 <input type="text" name="wid" value="" ><br>
 <input type="text" name="hght" value="" ><br>
       -->
       </form>
       </body>

      </html>

谢谢

4

1 回答 1

1

您的问题出在代码中timerID = setTimeout("startClock()", 1000);

改为使用 timerID = setTimeout(startClock, 1000);

请参阅window.setTimeout-MDN

于 2012-06-05T22:21:55.777 回答