代码雨教程

可以用电脑自带的文本文档打,很简单的。

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

        <style type="text/css">

            html,body{width: 100%;height: 100%;}

            body{

                background: #000;

                overflow: hidden;

                margin: 0;

                padding: 0;

            }

        </style>

    </head>

    <body>

        <canvas id="cvs"></canvas>

        <script type="text/javascript">

            var cvs = document.getElementById("cvs");

            var ctx = cvs.getContext("2d");

            var cw = cvs.width = document.body.clientWidth;

            var ch = cvs.height = document.body.clientHeight;

            //动画绘制对象

            var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;

            var codeRainArr = [];

            var cols = parseInt(cw/14); //代码雨列数

            var step = 16 ;    //步长,每一列内部数字之间的上下间隔

            ctx.font = "bold 26px microsoft yahei"

 

function createColorCv() {

//画布基本颜色

ctx.fillStyle="#242424";

ctx.fillRect(0,0,cw,ch);

}

 

            //创建代码雨

            function createCodeRain() {

                for (var n = 0; n < cols; n++) {

                    var col = [];

                    //基础位置,为了列与列之间产生错位

                    var basePos = parseInt(Math.random()*300);

                    //随机速度 3~13之间

                    var speed = parseInt(Math.random()*10)+3;

                    //每组的x轴位置随机产生

                    var colx = parseInt(Math.random()*cw)

 

   //绿色随机

var rgbr= 0;

var rgbg= parseInt(Math.random()*255);

var rgbb= 0;

//ctx.fillStyle = "rgb("+r+','+g+','+b+")"

 

                    for (var i = 0; i < parseInt(ch/step)/2; i++) {

                        var code = {

                            x : colx,

                            y : -(step*i)-basePos,

                            speed : speed,

//                            text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1  //随机生成0或者1

                            text : ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","s","t","u","v","w","x","y","z"][parseInt(Math.random()*11)], //随机生成字母数组中的一个

color : "rgb("+rgbr+','+rgbg+','+rgbb+")"

                        }

                        col.push(code);  

                    }

                    codeRainArr.push(col);

                }

            }

            //代码雨下起来

            function codeRaining(){

                //把画布擦干净

                ctx.clearRect(0,0,cw,ch);

//创建有颜色的画布

//createColorCv();

                for (var n = 0; n < codeRainArr.length; n++) {

                    //取出列

                    col = codeRainArr[n];

                    //遍历列,画出该列的代码

                    for (var i = 0; i < col.length; i++) {

                        var code = col[i];

                        if(code.y > ch){

                            //如果超出下边界则重置到顶部

                            code.y = 0;

                        }else{

                            //匀速降落

                            code.y += code.speed;

                        }

                        //颜色也随机变化

 

                        //ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)";

 

//绿色逐渐变浅

 

//ctx.fillStyle = "hsl(123,30%,"+(30-i*2)+"%)";

 

//绿色随机

//var r= 0;

//var g= parseInt(Math.random()*255) + 3;

//var b= 0;

//ctx.fillStyle = "rgb("+r+','+g+','+b+")"

ctx.fillStyle = code.color;

                        //把代码画出来

                        ctx.fillText(code.text,code.x,code.y);

                    }

                }

                requestAnimationFrame(codeRaining);

            }

 

            //创建代码雨

            createCodeRain();

            //开始下雨吧 GO>>

            requestAnimationFrame(codeRaining);

        </script>

    </body>

</html>

 

 

图片展示:

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
教程将介绍如何使用Python编写图像去的程序。我们将使用OpenCV库和Python语言来实现这个任务。 步骤1:导入库 首先,我们需要导入必要的库。我们将使用OpenCV库来处理图像。我们还将使用numpy库来进行数学运算。 ``` import cv2 import numpy as np ``` 步骤2:读取图像 我们将使用OpenCV库的imread函数来读取图像。如果图像文件不在当前工作目录中,我们需要使用完整路径。 ``` img = cv2.imread('image.jpg') ``` 步骤3:转换为灰度图像 为了更容易地处理图像,我们将将图像转换为灰度图像。我们可以使用OpenCV库的cvtColor函数来实现这一点。 ``` gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ``` 步骤4:提取边缘 我们将使用Sobel算子来提取边缘。Sobel算子是一种基于差分的算子,用于检测图像中的边缘。 ``` sobel_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5) sobel_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=5) edges = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0) ``` 步骤5:去除滴 我们将使用一种称为自适应直方图均衡化的技术来去除滴。这种技术可以增加图像的对比度,使滴更容易被检测和去除。 ``` clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8)) cl1 = clahe.apply(edges) ``` 步骤6:二值化图像 我们将使用二值化技术来将图像转换为黑白图像。这样做可以更容易地检测和去除滴。 ``` ret, thresh = cv2.threshold(cl1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) ``` 步骤7:去除噪声 我们将使用形态学操作来去除图像中的噪声。这种操作可以通过膨胀和腐蚀图像来实现。 ``` kernel = np.ones((3,3),np.uint8) closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel) ``` 步骤8:显示图像 最后,我们将使用OpenCV库的imshow函数来显示图像。 ``` cv2.imshow('Original Image', img) cv2.imshow('Processed Image', closing) cv2.waitKey(0) cv2.destroyAllWindows() ``` 完整代码如下: ``` import cv2 import numpy as np # Read image img = cv2.imread('image.jpg') # Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Extract edges sobel_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5) sobel_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=5) edges = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0) # Remove raindrops clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8)) cl1 = clahe.apply(edges) # Binarize image ret, thresh = cv2.threshold(cl1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # Remove noise kernel = np.ones((3,3),np.uint8) closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel) # Show images cv2.imshow('Original Image', img) cv2.imshow('Processed Image', closing) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值