算子模糊小demo

一个非常简单的关于自定义算子模糊图像的demo,但是有一个点需要注意:

src = imread("/Users/apple/Desktop/test.jpg", IMREAD_COLOR);
    
    
    int c = 0;
    int index = 0;
    int ksize = 0;
    while (1) {
        c = waitKey(500);
        if ((char)c == 27) {
            // ESC
            break;
        }
        ksize = 5 + (index % 8) * 2;
        Mat kernel = Mat::ones(Size(ksize, ksize), CV_32F) / (float)(ksize * ksize);
        filter2D(src, dst, -1, kernel, Point(-1, -1));
        index++;
        imshow("outoput", dst);
    }

注意 

 ksize = 5 + (index % 8) * 2;

这一句代码。

一定要使ksize为奇数,若是把“* 2”删除,则会导致图像在模糊的过程成颤抖。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 镜像模糊是一种常见的图像处理技术,可以用于模糊化图像的某些区域或者创建艺术效果。在Unity3D中,可以通过Shader实现镜像模糊。 以下是一个简单的镜像模糊的示例Shader: ``` Shader "Custom/ImageBlur" { Properties { _MainTex ("Texture", 2D) = "white" {} _BlurAmount ("Blur Amount", Range(0, 10)) = 5 } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _BlurAmount; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } float4 frag (v2f i) : COLOR { float4 sum = float4(0, 0, 0, 0); float2 texelSize = 1.0 / _ScreenParams.xy; for (int y = -_BlurAmount; y <= _BlurAmount; y++) { for (int x = -_BlurAmount; x <= _BlurAmount; x++) { float2 offset = float2(x, y) * texelSize * 2; sum += tex2D(_MainTex, i.uv + offset); } } sum /= ((_BlurAmount * 2 + 1) * (_BlurAmount * 2 + 1)); return sum; } ENDCG } } FallBack "Diffuse" } ``` 这个Shader中,首先定义了两个属性:_MainTex表示要模糊的纹理,_BlurAmount表示模糊程度。在Pass中,通过循环计算每个像素点的颜色值,最后得到模糊后的纹理。 使用该Shader时,只需要将其附加到一个材质上,并将需要模糊的纹理赋值给_MainTex属性即可。 ``` Material material = new Material(Shader.Find("Custom/ImageBlur")); material.SetTexture("_MainTex", textureToBlur); material.SetFloat("_BlurAmount", blurAmount); Graphics.Blit(textureToBlur, renderTexture, material); ``` 其中,textureToBlur为需要模糊的纹理,blurAmount为模糊程度。通过Graphics.Blit将模糊后的纹理渲染到renderTexture中。 ### 回答2: U3D是一种游戏开发引擎,可以用来创建各种类型的游戏和应用程序。要实现镜像模糊的效果,可以按照以下步骤进行: 1. 创建一个3D场景,并添加一个相机和一个平面。相机用来渲染场景,平面用来显示镜像效果。 2. 在相机上添加一个RenderTexture组件。RenderTexture是一个可以进行渲染的纹理,可以将相机渲染的内容保存到纹理中。 3. 在平面上添加一个材质,用来显示RenderTexture中的内容。 4. 在代码中,获取相机的渲染目标(即RenderTexture),并设置为一个全屏大小的纹理。 5. 开启镜像效果,可以在代码中编写一个Shader,使用模糊算法对渲染目标进行处理。可以使用高斯模糊或者其他模糊算法来实现。 6. 将处理后的渲染目标传递给平面的材质,更新显示效果。 7. 运行项目,即可看到镜像模糊的效果。 实现这个效果需要一定的编程和图形学基础,对U3D的使用也有一定的了解。可以通过学习U3D的官方文档、教程和参考资料来获得更多细节和实现方式。 ### 回答3: 实现u3d镜像模糊demo,可以参考以下步骤: 1. 创建一个3D场景,并添加一个计算机生成的镜像。 2. 使用Shader创建一个材质,并将其应用到镜像的渲染器上。 3. 在Shader中,使用采样器来获取镜像的纹理,并对其应用一个模糊效果。 4. 实现模糊效果的方法有很多种,这里以高斯模糊为例。可以使用多次采样和权重求和来模拟高斯模糊的效果。 5. 在计算每个像素的颜色时,可以通过对周围像素进行采样并根据权重进行加权平均来实现模糊效果。 6. 在渲染镜像时,在相机对应的渲染目标上使用这个材质来渲染镜像,从而实现镜像模糊效果。 7. 可以通过调整模糊的程度、模糊的范围以及模糊的中心来实现不同的模糊效果。 最后,通过实现以上步骤,就可以在u3d中得到一个镜像模糊demo。根据实际需要,可以进一步扩展和改进这个demo,来实现更加丰富和复杂的镜像模糊效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值