gaussian 阴影

float my_sample( sampler2DShadow TEXTURE, vec4 sc )
{
#if 1
    //gaussian
    float shadow = 0.0;                                                                                                     
    for(int i = -2; i <= 2; ++i)                                                                                             
    {                                                                                                                         
        for(int j = -2; j <= 2; ++j)                                                                                          
        {                                                                                                                 
            shadow += textureProjOffset(TEXTURE, sc, ivec2(i, j)) * 0.04;                    
        }                                                                                                                 
    }                                                                                                                       
                                                                                                                           
    return shadow;                                                                     
#else
   //return 1;
    ivec3 offsetCoord;
    offsetCoord.xy = ivec2( mod( gl_FragCoord.xy, OffsetTexSize.xy ) );

    float sum = 0.0, shadow = 1.0;
    int samplesDiv2 = int(OffsetTexSize.z);
    
    float R = Radius * 1;

    // Don't test points behind the light source.
    if( sc.z >= 0 )
    {
        for( int i = 0 ; i < 4; i++ ) {
            offsetCoord.z = i;
            vec4 offsets = texelFetch(u_shadow_map_Jittering,offsetCoord,0) * R * sc.w;

            sc.xy = sc.xy + offsets.xy;
            sum += textureProj(TEXTURE, sc);
            sc.xy = sc.xy + offsets.zw;
            sum += textureProj(TEXTURE, sc);
        }
        shadow = sum / 8.0;

        if( shadow != 1.0 && shadow != 0.0 ) {
            for( int i = 4; i < samplesDiv2; i++ ) {
                offsetCoord.z = i;
                vec4 offsets = texelFetch(u_shadow_map_Jittering, offsetCoord,0) * R * sc.w;

                sc.xy = sc.xy + offsets.xy;
                sum += textureProj(TEXTURE, sc);
                sc.xy = sc.xy + offsets.zw;
                sum += textureProj(TEXTURE, sc);
            }
            shadow = sum / float(samplesDiv2 * 2.0);
        }
    }
    
    return shadow;
#endif
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Python的OpenCV库进行阴影处理时,可以通过以下步骤实现: 1. 读取图像:使用cv2.imread函数读取图像文件,将其转换为灰度图像。例如,可以使用以下代码读取名为"1.jpg"的图像文件并转换为灰度图像: ```python import cv2 image = cv2.imread("1.jpg", cv2.IMREAD_GRAYSCALE) ``` 2. 二值化处理:使用自适应阈值方法将图像二值化,以便更好地分离阴影区域。可以使用cv2.adaptiveThreshold函数实现。例如,可以使用以下代码将图像进行二值化处理: ```python binary = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 25, 15) ``` 3. 去除背景:通过形态学操作去除背景,可以使用cv2.getStructuringElement和cv2.morphologyEx函数实现。例如,可以使用以下代码去除背景: ```python se = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1)) se = cv2.morphologyEx(se, cv2.MORPH_CLOSE, (2, 2)) mask = cv2.dilate(binary, se) ``` 4. 显示结果:可以使用cv2.imshow函数显示处理后的图像。例如,可以使用以下代码显示去除背景后的图像: ```python cv2.imshow('result', mask) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,以上代码仅为示例,具体的阈值和参数值可能需要根据实际情况进行调整。同时,还可以根据需要进行其他后续处理,如阴影区域的填充或其他图像处理操作。 #### 引用[.reference_title] - *1* *2* [opencv-python实现图片背景去除、阴影去除使图像清晰](https://blog.csdn.net/RayChiu757374816/article/details/119675810)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python 用 OpenCV 实现 PS 高光/阴影选区](https://blog.csdn.net/u011520181/article/details/116244184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值