首页
学习
活动
专区
圈层
工具
发布

图像水波特效

:/Users/xpp/Desktop/Lena.png') rows,cols=img.shape[:2] dst=np.zeros((rows,cols,3),dtype="uint8") #定义水波特效参数...wavelength=20 amplitude=30 phase=math.pi/4 #获取中心点 centreX=0.5 centreY=0.5 radius=min(rows,cols)/2 #设置水波覆盖面积...icentreX=cols*centreX icentreY=rows*centreY #图像水波特效 for i in range(rows): for j in range(cols):...cv2.imshow('original',img) cv2.imshow('result',dst) cv2.waitKey() cv2.destroyAllWindows() 算法:图像水波特效是围绕水波中心点进行波纹涟漪传递...如图,红轴表示水面,蓝色椭圆表示水波。 对于某个点x,其运动轨迹上的每个点都可以分解为与视线平行和垂直的2个方向上的位移,计算出垂直视线的位移y,即计算出水波导致像素点偏移位移。

49330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    自定义View实现横向的双水波纹进度条

    [HorizontalWaveProgressView.GIF] 网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改为水平的还遇到了些麻烦,现在完善后发布出来,希望遇到的人少躺点坑。...思路分析 整体效果可分为三个,绘制圆角背景和圆角矩形,绘制第一条和第二条水波浪,根据自定义进度变化效果。...dp1); } canvas.drawRoundRect(rectBorder, dp27, dp27, borderPaint); 我们创建一个新的画布,然后在画布里画上圆角矩形背景和第一条和第二条水波浪...\ waveLength为水波长度,一个上弧加一个下弧为一个波长。...2)绘制第二条水波,第二条水波和第一条类似,只是起始点变了: /** * 绘制第二层波浪 */ private Path canvasSecondPath() { secondWavePath.reset

    83620

    鸿蒙特效教程03-水波纹动画效果实现教程

    鸿蒙特效教程03-水波纹动画效果实现教程 本教程适合HarmonyOS初学者,通过简单到复杂的步骤,一步步实现漂亮的水波纹动画效果。...这个布局包含一个占满屏幕的区域,用于展示水波纹动画。...二、定义水波纹数据结构 在实现动画效果之前,我们需要先定义水波纹的数据结构。...四、实现水波纹创建逻辑 下一步,我们来实现水波纹的创建逻辑: // 创建一个新的水波纹 createRipple(x: number, y: number) { // 创建随机颜色 const...: ArkUI 搭建基础布局,创建用于展示水波纹的容器 @State 定义水波纹数据结构,设计存储和管理波纹的方式 实现基本的波纹绘制和触摸事件 onTouch 创建水波纹生成逻辑,包括随机颜色 Math.random

    26500

    自定义View实现横向的双水波纹进度条

    HorizontalWaveProgressView.GIF 网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改为水平的还遇到了些麻烦,现在完善后发布出来,希望遇到的人少躺点坑。...思路分析 整体效果可分为三个,绘制圆角背景和圆角矩形,绘制第一条和第二条水波浪,根据自定义进度变化效果。...waveLength为水波长度,一个上弧加一个下弧为一个波长。...path的起始点为(0,0)可根据进度动态改变,然后循环画曲线,长度是有几个波浪就是多长,然后连接到view高度的位置,最后到(0,0),形成一个封闭的区域,这样就实现了一个填充的水波效果。...2)绘制第二条水波,第二条水波和第一条类似,只是起始点变了: /** * 绘制第二层波浪 */ private Path canvasSecondPath() { secondWavePath.reset

    84420

    js文件异步上传进度条

    进度条的应用是为了显示的告诉用户文件上传了多少,对于小文件的上传基本上应用不到进度条。...进度条主要应用于大文件的上传,在于告诉用户上传情况,不至于让用户无状态等待,增加了用户的体验,如果没有进度条,在上传过程中,用户不知道是不是卡死了,这种体验就很差了,下面我们来说一下如何在异步上传时显示进度条...其实无论是原生js写xhr,还是jq的ajax,还是axios的异步都提供了一个获取上传进度的API,首先我们来看一下原生js如何获取上传进度。...原生js获取上传进度 var fd = new FormData(); fd.append("file", document.getElementById('testFile').files[0]);...; } }); axios获取上传进度 在axios中提供了一个参数onUploadProgress,有了这个参数就可以很方便的获取上传进度了,其方法实现还是和原生js的一样,这个参数其实就是注册一个监听事件

    11.1K20
    领券