图像处理--基于像素层面

news2024/11/25 3:49:28

python 图像锐化

图像锐化可以使图像的边缘更加清晰,增强图像的细节。常见的图像锐化算法有拉普拉斯算子、Sobel算子、Prewitt算子等。下面是使用拉普拉斯算子实现图像锐化的Python代码:

import cv2
import numpy as np

def laplacian_sharpen(img, ksize=3):
    # 创建拉普拉斯算子核
    kernel = np.array([[-1, -1, -1], [-1, ksize+8, -1], [-1, -1, -1]])
    # 对图像进行滤波
    result = cv2.filter2D(img, -1, kernel)
    # 将像素值限制在0~255之间
    result[result < 0] = 0
    result[result > 255] = 255
    # 将图像转换为整数类型,并返回结果
    return result.astype(np.uint8)

# 加载原始图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 进行图像锐化处理
result = laplacian_sharpen(img)
# 显示原始图像和结果图像
cv2.imshow('Original Image', img)
cv2.imshow('Sharpened Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

该代码使用了拉普拉斯算子核对图像进行滤波,增强了图像的边缘。需要注意的是,拉普拉斯算子对图像的高频细节进行增强,同时也会增加图像的噪声,因此在实际应用中需要根据具体情况进行调整。

效果图: 

 

使用一种新的光照增强算法的夜间图像增强-论文《Nighttime image enhancement using a new illumination boost algorithm》

效果图: 

 这篇博客有很多夜间图像增强算法

(70条消息) 低光照图像增强算法汇总_低照度图像增强算法_Wanderer001的博客-CSDN博客

 

图像处理算法的最新进展

背景

在深度学习大行其道的今天,计算机视觉领域似乎只剩下了机器学习/深度学习的声音,研究的关注点似乎也只局限在了深度网络、图像分类、检测、跟踪、分割、重识别等问题上,图像处理似乎变成了上个世纪的古董。实际上,随着业务和应用的开展,当计算机视觉离开了实验室,走进各色各样的应用场景,其局限性和瓶颈就开始显露出来。仅以如下几个实际场景为例:

  1. 目标检测问题中,当场景中的局部区域照度/对比度较低、带有色偏(color bias),会导致漏检或误检;而额外标注低照度、色偏场景,则可能面临标注成本的瓶颈、数据采集困难等问题。
  2. 人体特征识别时,行人的着装颜色很难定义和标注。人的着装往往不是单色,而是以一两种颜色为主,配合着其他颜色的文理和花纹。这就导致行人着装的颜色分类问题从标注部分开始就面临着困难。相类似的问题还有骑行工具(摩托车/电动车等)的颜色分类问题。
  3. 行人重识别问题中,同一个人体在不同的场景下的颜色会有不同程度的偏移(bias),影响重识别的精度;如果能对其进行简单的调整,就有可能改善算法的精度。

上述三个例子总结而言,都属于数据采集和标注成本较高,同时遇到的问题在算法设计之初不易预料到的例子。在这三个例子中,针对问题增大标注的范围不是不可以,但是时间成本和财务成本都不可小觑。如果能够适当的采用图像处理的算法对数据加以适当的调整,则有可能省却了新增标注和数据采集带来的额外麻烦。例如,针对上述三个例子,可以考虑的采用如下的方法:

  1. 如果能够对于较暗的场景,适当进行局部的照度/对比度增强,或者颜色矫正,则完全省却了标注和数据采集带来的麻烦。
  2. 如果能够对行人进行整体结构和文理的分离,只保留主要结构信息,则主要颜色应当可以保留,也就会便于标注。
  3. 如果能够进行适当的颜色调整,将会提升精度。

总结而言,目前大行其道的深度学习算法,标注数据是“硬性”的,而复杂场景下的图像往往其分布并不理想,也并不“规整”(例如对猫分类,就是“规整的问题”,只有“猫”和“非猫”两类,不存在中间态;而“较暗的区域”和“行人上衣的颜色”则是“不规整的问题”,因为答案无法用“是/非”来唯一去顶)。虽然深度网络具有巨大的容量,可以在最大程度上容忍数据的不“规整”,但是还是会在一些特殊场合下暴露出问题。如果能够利用图像处理方法对这些“不规整”的数据加以修正,突出其中我们想要的部分,会更好的实现我们的目的。

另外,随着计算机视觉技术的进步,图像处理已经越来越精深,花样和门类也越来越多。对其进行研讨和梳理,本身就是赏心悦目的事情。

照度/对比度增强

 Ying Z, Li G, Ren Y, et al. A New Image Contrast Enhancement Algorithm Using Exposure Fusion Framework[C]//International Conference on Computer Analysis of Images and Patterns. Springer, Cham, 2017: 36-46.        

知乎 - 安全中心https://link.zhihu.com/?target=http%3A//openaccess.thecvf.com/content_ICCV_2017_workshops/papers/w43/Ying_A_New_Low-Light_ICCV_2017_paper.pdf

Chen, Chen, et al. "Learning to See in the Dark."arXiv preprint arXiv:1805.01934(2018).

SID​cchen156.web.engr.illinois.edu/SID.html正在上传…重新上传取消icon-default.png?t=N176https://link.zhihu.com/?target=http%3A//cchen156.web.engr.illinois.edu/SID.html

http://cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf​cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdficon-default.png?t=N176https://link.zhihu.com/?target=http%3A//cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf

去雾

图像处理算子的加速

  • Chen, Jiawen, et al. "Bilateral guided upsampling."ACM Transactions on Graphics (TOG)35.6 (2016): 203.

https://people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdf​people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdficon-default.png?t=N176https://link.zhihu.com/?target=https%3A//people.csail.mit.edu/hasinoff/pubs/ChenEtAl16-bgu.pdf

  • He, Kaiming, Jian Sun, and Xiaoou Tang. "Guided image filtering."IEEE transactions on pattern analysis & machine intelligence6 (2013): 1397-1409.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.649.2027&rep=rep1&type=pdf​citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.649.2027&rep=rep1&type=pdficon-default.png?t=N176https://link.zhihu.com/?target=http%3A//citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.649.2027%26rep%3Drep1%26type%3Dpdf

 

Retinex算法效果展示与分析

在这里插入图片描述
上图展示了Retinex算法在一些真实数据上面的效果。上面主要展示了该算法在一些文档上面的增强效果,第一行的5张图片表示的是原始的输入图片,第二行的5张图片表示的是使用Retinex算法增强之后的效果。通过观察我们可以发现,该算法不仅能够增强图像的亮度信息,同时可以去除图片中的部分阴影信息;但是该算法的运算速度比较慢,不能应用到一些实时的场景中。

 低光图像目标检测的研究成果总结 - 腾讯云开发者社区-腾讯云 (tencent.com)

低光图像目标检测的研究成果总结 - 腾讯云开发者社区-腾讯云 (tencent.com) 

1、深度学习以前

1、A Novel Method to Compensate Variety of Illumination In Face Detection

本文介绍了一些基于空间域的传统方法。采用LogAbout进行光照补偿后,正确检测率明显提高。该思想能够快速有效地解决光照补偿问题,适用于自动检测人脸和实时跟踪人脸。本文提出的LogAbout思想也有助于一般的图像处理、目标检测和识别。

2、An Image-Range Fusion Pedestrian Detection System in Low Illumination Conditions

本文提出了一种同时应用图像数据和距离数据的图像-距离融合系统(IRFS)。对于图像部分,提出了一种动态照明物体(DIO)检测器,以克服部分光照条件不确定带来的问题。具体来说,DIO检测器应用两种特征,包括用于表示形状信息的方向梯度直方图(HOG)和用于建模纹理信息的对数加权模式(LWP)。

3、Automatic human face detection and recognition under non-uniform illumination

本文提出了一种自动人脸检测和识别系统。该过程包括五个步骤:(1)哈尔小波变换,(2)人脸边缘检测,(3)对称轴检测,(4)人脸检测和(5)人脸识别。步骤1分解输入图像,减少图像冗余。步骤2使用边缘信息排除非面部区域,而步骤3使用梯度方向进一步缩小面部区域。步骤4通过模板匹配来限制类似人脸的区域。最后,第五步确定类人脸区域中的最佳人脸位置,并基于主成分分析进行人脸识别。该系统在非均匀光照条件下表现出显著的鲁棒性。

4、Detection Algorithm for Color Image by Multiple Surveillance Camera under Low Illumination Based-on Fuzzy Corresponding Map

针对低照度下的真实监控系统,本文提出了一种双摄像机彩色动态图像目标检测算法。它为低亮度条件提供模糊对应图和颜色相似度的自动计算,在低照度下检测电荷耦合器件相机图像中的小彩色区域。在低亮度条件下对日本某市中心真实监控摄像机拍摄的两幅动态图像的实验检测结果表明,在相同的误报率下,与独立检测算法相比,该算法的准确率提高了15%,并讨论了该算法在严重监控情况下的可实现性。所提出的算法正被考虑用于日本一个安全性相对较差的市区(购物中心)的低成本监控系统。

5、Face Detection with the Modified Census Transform

光照变化是目标识别中的一个大问题,通常需要在分类前进行昂贵的补偿。希望有一种图像到图像的变换,它只揭示目标的结构,以便进行有效的匹配。在这方面,本文工作的贡献是双重的。首先,本文引入光照不变的局部结构特征进行目标检测。为了提高计算效率,本文提出了一种改进的普查变换,它改进了扎比和伍德菲尔的原始工作[10]。本文展示了一些缺点以及如何用修改后的版本克服它们。其次,本文引入了一个高效的四阶段分类器用于快速检测。每个单级分类器是一个线性分类器,由一组特征查找表组成。我们表明,第一阶段只评估20个特征,过滤掉99%以上的背景位置。因此,分类器结构比先前描述的多阶段方法简单得多,同时具有类似的能力。光照不变特征与简单分类器的结合导致了标准计算机上的实时系统(60秒,图像大小:288×384,2GHz奔腾)。检测结果显示在该领域两个常用的数据库上,即麻省理工学院+CMU的130幅图像和生物标识的1526幅图像。本文实现了90%以上的检测率和10-7%的极低假阳性率。我们还提供了一个演示程序,可以在互联网上找到http://www.iis.fraunhofer.de/bv/biometrie/download/.

6、Image Detection Under Low-Level Illumination

微光条件下的图像检测被视为一个假设检验问题,在该问题中,观测值被建模为散粒噪声过程。由于计算散粒噪声过程的李可利-胡德比率是不可行的,本文建议使用通过过滤和采样观测值获得的一维检验统计量。选择滤波器是为了最大化广义信噪比。一维检验统计量的似然比通过在每个假设下反转相应的特征函数来进行数值评估。

2、深度学习以后

1、Deep Learning based Effective Surveillance System for Low-Illumination Environments

本文提出了一个系统,通过结合图像质量改善网络和目标检测网络,帮助获取在不同地方使用的普通监视摄像机的质量图像。这将提高夜间低照度区域的安全性。还可以建立一个更有效的监测系统,监测低照度地区的情况。 2、Getting to know low-light images with the Exclusively Dark dataset

提出了暗光目标检测数据集,下载链接:GitHub - cs-chan/Exclusively-Dark-Image-Dataset: Exclusively Dark (ExDARK) dataset which to the best of our knowledge, is the largest collection of low-light images taken in very low-light environments to twilight (i.e 10 different conditions) to-date with image class and object level annotations.

3、IMAGE PROCESSING APPROACHES FOR AUTONOMOUS NAVIGATION OF TERRESTRIAL VEHICLES IN LOW ILLUMINATION

计算机视觉可以作为任何自主系统的一个组成部分。视觉输入和处理能够实现更快、更早的决策。计算机视觉的一个重要挑战是物体的检测和识别。这种挑战在低照度下更为明显。本文提出了一个检测和识别模型的道路警告标志与语音通知系统都自动和普通车辆考虑不同的照明水平。使用opencv分析来自车辆的实时视频。使用过滤器去除了视频中的噪音。检测是基于哈尔级联和训练样本的积极和消极的图像。文本识别基于模式匹配。语音通知是使用字符串到语音转换器完成的。考虑到车辆前灯的强光,夜视被照亮了。

4、 Low Illumination Enhancement For Object Detection In Self-Driving*

目标检测在自动驾驶领域发挥着重要作用。光照对目标检测有很大的影响,但目前大多数方法都没有很好地解决弱光环境下的目标检测问题。本文提出了一种基于循环生成对抗网络的图像转换优化网络。我们重新设计了CycleGAN的鉴别器网络,增加了额外的鉴别器,优化了网络的多个部分如损失函数,并在网络转换后增加了目标检测网络。利用牛津大学的机器人小车数据集验证了该方法的有效性,结果表明,该方法能够显著提高低照度环境下的检测精度,增加检测到的目标数量。

5、Low-Illumination Image Enhancement for Night-Time UAV Pedestrian Detection

为了在夜间条件下利用无人机实现可靠的行人检测,提出了一种图像增强方法来改善低照度图像质量。首先,通过双曲正切曲线将图像亮度映射到期望的水平。其次,针对YCbCr颜色空间中的反锐化滤波器,提出了块匹配和三维滤波方法,用于图像去噪和锐化。最后,利用卷积神经网络模型进行行人检测,完成监控任务。实验结果表明,增强图像的闵可夫斯基距离度量指数提高到0.975,检测准确率分别达到0.907和0.840,是其他图像增强方法中最高的。该方法对智能城市应用中的夜间无人机视觉监控具有潜在价值。

6、Nighttime Vehicle Detection Based on Bio-Inspired Image Enhancement and Weighted Score-Level Feature Fusion

本文提出了一种有效的夜间车辆检测系统,该系统结合了一种新颖的仿生图像增强方法和加权特征融合技术。受自然视觉处理中的视网膜机制的启发,本文开发了一种夜间图像增强方法,通过建模来自水平细胞的自适应反馈和双极细胞的中央包围的拮抗接受域。在此基础上,利用卷积神经网络、梯度方向直方图和局部二值模式对分类器进行特征提取,利用支持向量机对分类器进行训练。这些特征通过将每个特征的得分向量与学习到的权重相结合来融合。在检测过程中,通过将车辆尾灯检测与目标提案相结合来生成准确的感兴趣区域。实验结果表明,所提出的仿生图像增强方法对车辆检测有较好的效果。我们的车辆检测方法显示了95.95%的检出率,每幅图像为0.0575假阳性,并优于一些最先进的技术。我们提出的方法可以处理各种场景,包括不同类型和大小的车辆,那些有遮挡和模糊区域。它还可以检测不同位置的车辆和多辆车辆。

 ========================================================================

python实现图像白平衡

转自:https://www.cnblogs.com/hangy/p/12569157.html

import cv2
import numpy as np
 
def white_balance(img, mode=1):
    """白平衡处理(默认为1均值、2完美反射、3灰度世界、4基于图像分析的偏色检测及颜色校正、5动态阈值)"""
    # 读取图像
    b, g, r = cv2.split(img)
    # 均值变为三通道
    h, w, c = img.shape
    if mode == 1:
        # 默认均值  ---- 简单的求均值白平衡法
        b_avg, g_avg, r_avg = cv2.mean(b)[0], cv2.mean(g)[0], cv2.mean(r)[0]
        # 求各个通道所占增益
        k = (b_avg + g_avg + r_avg) / 3
        kb, kg, kr = k / b_avg, k / g_avg, k / r_avg
        b = cv2.addWeighted(src1=b, alpha=kb, src2=0, beta=0, gamma=0)
        g = cv2.addWeighted(src1=g, alpha=kg, src2=0, beta=0, gamma=0)
        r = cv2.addWeighted(src1=r, alpha=kr, src2=0, beta=0, gamma=0)
        output_img = cv2.merge([b, g, r])
    elif mode == 2:
        # 完美反射白平衡 ---- 依赖ratio值选取而且对亮度最大区域不是白色的图像效果不佳。
        output_img = img.copy()
        sum_ = np.double() + b + g + r
        hists, bins = np.histogram(sum_.flatten(), 766, [0, 766])
        Y = 765
        num, key = 0, 0
        ratio = 0.01
        while Y >= 0:
            num += hists[Y]
            if num > h * w * ratio / 100:
                key = Y
                break
            Y = Y - 1
 
        sumkey = np.where(sum_ >= key)
        sum_b, sum_g, sum_r = np.sum(b[sumkey]), np.sum(g[sumkey]), np.sum(r[sumkey])
        times = len(sumkey[0])
        avg_b, avg_g, avg_r = sum_b / times, sum_g / times, sum_r / times
 
        maxvalue = float(np.max(output_img))
        output_img[:, :, 0] = output_img[:, :, 0] * maxvalue / int(avg_b)
        output_img[:, :, 1] = output_img[:, :, 1] * maxvalue / int(avg_g)
        output_img[:, :, 2] = output_img[:, :, 2] * maxvalue / int(avg_r)
    elif mode == 3:
        # 灰度世界假设
        b_avg, g_avg, r_avg = cv2.mean(b)[0], cv2.mean(g)[0], cv2.mean(r)[0]
        # 需要调整的RGB分量的增益
        k = (b_avg + g_avg + r_avg) / 3
        kb, kg, kr = k / b_avg, k / g_avg, k / r_avg
        ba, ga, ra = b * kb, g * kg, r * kr
 
        output_img = cv2.merge([ba, ga, ra])
    elif mode == 4:
        # 基于图像分析的偏色检测及颜色校正
        I_b_2, I_r_2 = np.double(b) ** 2, np.double(r) ** 2
        sum_I_b_2, sum_I_r_2 = np.sum(I_b_2), np.sum(I_r_2)
        sum_I_b, sum_I_g, sum_I_r = np.sum(b), np.sum(g), np.sum(r)
        max_I_b, max_I_g, max_I_r = np.max(b), np.max(g), np.max(r)
        max_I_b_2, max_I_r_2 = np.max(I_b_2), np.max(I_r_2)
        [u_b, v_b] = np.matmul(np.linalg.inv([[sum_I_b_2, sum_I_b], [max_I_b_2, max_I_b]]), [sum_I_g, max_I_g])
        [u_r, v_r] = np.matmul(np.linalg.inv([[sum_I_r_2, sum_I_r], [max_I_r_2, max_I_r]]), [sum_I_g, max_I_g])
        b0 = np.uint8(u_b * (np.double(b) ** 2) + v_b * b)
        r0 = np.uint8(u_r * (np.double(r) ** 2) + v_r * r)
        output_img = cv2.merge([b0, g, r0])
    elif mode == 5:
        # 动态阈值算法 ---- 白点检测和白点调整
        # 只是白点检测不是与完美反射算法相同的认为最亮的点为白点,而是通过另外的规则确定
        def con_num(x):
            if x > 0:
                return 1
            if x < 0:
                return -1
            if x == 0:
                return 0
 
        yuv_img = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
        # YUV空间
        (y, u, v) = cv2.split(yuv_img)
        max_y = np.max(y.flatten())
        sum_u, sum_v = np.sum(u), np.sum(v)
        avl_u, avl_v = sum_u / (h * w), sum_v / (h * w)
        du, dv = np.sum(np.abs(u - avl_u)), np.sum(np.abs(v - avl_v))
        avl_du, avl_dv = du / (h * w), dv / (h * w)
        radio = 0.5  # 如果该值过大过小,色温向两极端发展
 
        valuekey = np.where((np.abs(u - (avl_u + avl_du * con_num(avl_u))) < radio * avl_du)
                            | (np.abs(v - (avl_v + avl_dv * con_num(avl_v))) < radio * avl_dv))
        num_y, yhistogram = np.zeros((h, w)), np.zeros(256)
        num_y[valuekey] = np.uint8(y[valuekey])
        yhistogram = np.bincount(np.uint8(num_y[valuekey].flatten()), minlength=256)
        ysum = len(valuekey[0])
        Y = 255
        num, key = 0, 0
        while Y >= 0:
            num += yhistogram[Y]
            if num > 0.1 * ysum:  # 取前10%的亮点为计算值,如果该值过大易过曝光,该值过小调整幅度小
                key = Y
                break
            Y = Y - 1
 
        sumkey = np.where(num_y > key)
        sum_b, sum_g, sum_r = np.sum(b[sumkey]), np.sum(g[sumkey]), np.sum(r[sumkey])
        num_rgb = len(sumkey[0])
 
        b0 = np.double(b) * int(max_y) / (sum_b / num_rgb)
        g0 = np.double(g) * int(max_y) / (sum_g / num_rgb)
        r0 = np.double(r) * int(max_y) / (sum_r / num_rgb)
 
        output_img = cv2.merge([b0, g0, r0])
    else:
        raise TypeError('mode should be in [1,2,3,4,5]. Got {}'.format(mode))
    output_img = np.uint8(np.clip(output_img, 0, 255))
    return output_img

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/393970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL日志文件

文章目录1.MySQL中的日志文件2.bin log的作用3.redo log的作用4.bin log和redo log的区别&#xff08;1&#xff09;存储的内容&#xff08;2&#xff09;功能&#xff08;3&#xff09;写入时间&#xff08;4&#xff09;写入方式5.两阶段提交6.undo log的作用1.MySQL中的日志…

springcloud3 fegin实现服务调用1

一 Fegin的作用 1.1 fegin的作用 fegin是一个声明式的web服务客户端&#xff0c;让编写web服务器客户端变得非常容易&#xff0c;只需创建一个接口并在接口中添加FeginClients注解即可。 Fegin的使用方式&#xff1a;使用fegin的注解定义接口&#xff0c;调用这个接口&#…

BI软件工具也有ChatGPT

ChatGPT最近大火&#xff0c;朋友圈、聊天群啊到处都在分享它、讨论它。我也凑了个热闹&#xff0c;先和它聊了一下孩子学习上的困惑&#xff0c;然后用它给孩子出了一套易错题型的练习题&#xff0c;缓解了我做为熊孩子家长的压力。ChatGET能做的可不止这些&#xff0c;还能写…

MTK平台开发入门到精通(休眠唤醒篇)休眠唤醒LPM框架

文章目录 一、lpm驱动源码分析二、设备属性调试文件沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 lpm 驱动源码分析。 mtk 平台下,其默认的 lpm 机制的源码位置:drivers/misc/mediatek/lpm/ 一、lpm驱动源码分析 目录:drivers/misc/mediatek/lpm/…

aardio 编程语言

今天看到一篇文章《独自坚持 17 年&#xff0c;aardio 作者&#xff1a;“因妻子患癌&#xff0c;再无精力维护项目”》&#xff0c;才知道有个这个项目&#xff0c;也算是很有情怀的一个开发者&#xff0c;对程序有着真挚的热忱&#xff0c;aardio &#x1f50a; 专注于桌面软…

Unity Avatar Cover System - 如何实现一个Avatar角色的智能掩体系统

文章目录简介变量说明实现动画准备动画状态机State 状态NoneStand To CoverIs CoveringCover To Stand高度适配高度检测脚部IK简介 本文介绍如何在Unity中实现一个Avatar角色的智能掩体系统&#xff0c;效果如图所示&#xff1a; 初版1.0.0代码已上传至SKFramework框架Package…

数据库系统-关系模式

二、DB的抽象与演变 2.1 DB的标准结构 DBMS管理数据的三个层次 ● (局部模式)Entrenal Level 外部层次 User Level 用户层次 ○ 用户能够看到雨处理的数据&#xff0c;全局数据中的某一部分 ● (全局模式)Conceptual Level 概念层次 Logic Level 逻辑层次 ○ 从全局角度理解…

【Linux】编译器gcc g++和调试器gdb的使用

文章目录1.编译器gcc/g1.1C语言程序的翻译过程1.预处理2.编译3.汇编4. 链接1.2 链接方式与函数库1.动态链接与静态链接2.动态库与静态库1.3 gcc与g的使用2.调试器gdb2.1debug和release2.2gdb的安装2.3gdb的使用2.4gdb的常用指令3.总结1.编译器gcc/g 1.1C语言程序的翻译过程 1…

一个ELF文件分析和逆向的过程

CrackMe1、2分析和逆向的过程 1. CrackMe1、2相关信息 CrackMe1 1、CrackMe1是一个ELF可执行文件&#xff0c;可在Android中独立执行 2、通过adb(Android SDK中默认带有adb工具)将CrackMe1 push到远程Android设备中&#xff0c;建议放在/data/local/tmp目录下 3、打开adb shel…

关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、abort()R6010等故障模块排查及解决方法

一、常见故障介绍  最近在开发相机项目&#xff08;项目细节由于公司保密就不介绍了&#xff09;&#xff0c;程序运行5个来月以来首次出现msvcr100.dll故障等问题&#xff0c;于是乎开始了分析之路&#xff0c;按照度娘上的一顿操作&#xff0c;期间也是出现了各种不一样的问…

Lombok常见用法总结

目录一、下载和安装二、常见注释&#xff08;一&#xff09;Data&#xff08;二&#xff09;Getter和Setter&#xff08;三&#xff09;NonNull和NotNull&#xff08;不常用&#xff09;&#xff08;四&#xff09;ToString&#xff08;不常用&#xff09;&#xff08;五&#…

一款丧心病狂的API测试工具:Apifox!

你好&#xff0c;我是测试开发工程师——凡哥。欢迎和我交流测试领域相关问题&#xff08;测试入门、技术、python交流都可以&#xff09; 我们平时在做接口测试的时候&#xff0c;对于一些常用的接口测试工具的使用应该都非常熟悉了&#xff1a; 接口文档&#xff1a;Swagge…

Databend 开源周报 第 83 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.com 。Whats New探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。Support for WebHDFSHDFS 是大数…

ArrayList集合底层原理

ArrayList集合底层原理ArrayList集合底层原理1.介绍2.底层实现3.构造方法3.1集合的属性4.扩容机制5.其他方法6.总结ArrayList集合底层原理 1.介绍 ​ ArrayList是List接口的可变数组的实现。实现了所有可选列表操作&#xff0c;并允许包括 null 在 内的所有元素。 每个 Array…

静态库和动态库的打包与使用

静态库和动态库 静态库和动态库的打包 生成可执行程序时链接使用 运行可执行程序时加载使用 提前声明&#xff0c;笔者示例的文件有mian.c/child.c/child.h。OK&#xff0c;我们先了解一下&#xff0c;库文件是什么&#xff1f;它其实就是打包了一堆实现常用功能的代码文件. ⭐…

Python之re库用法细讲

文章目录前言一、使用 re 模块的前期准备工作二、使用 re 模块匹配字符串1. 使用 match() 方法进行匹配2. 使用 search() 方法进行匹配3. 使用 findall() 方法进行匹配三、使用 re 模块替换字符串四、使用 re 模块分割字符串总结前言 在之前的博客中我们学习了【正则表达式】的…

C++ typedef用法详解

typedef的4种常见用法&#xff1a;给已定义的变量类型起个别名定义函数指针类型定义数组指针类型为复杂的声明定义一个新的简单的别名总结一句话&#xff1a;“加不加typedef&#xff0c;类型是一样的"&#xff0c;这句话可以这样理解&#xff1a;没加typedef之前如果是个…

云原生架构设计原则及典型技术

云原生是面向云应用设计的一种思想理念&#xff0c;充分发挥云效能的最佳实践路径&#xff0c;帮助企业构建弹性可靠、松耦合、易管理可观测的应用系统&#xff0c;提升交付效率&#xff0c;降低运维复杂度。代表技术包括不可变基础设施、服务网格、声明式 API 及 Serverless 等…

Apk加固后多渠道打包

之前一直使用360加固宝进行apk的加固打包&#xff0c;可以一键加固并打多渠道打包。但是&#xff0c;现在360加固宝收费了&#xff0c;在进行加固&#xff0c;多渠道打包&#xff0c;就得一步一步自己操作了&#xff0c;会很繁琐。所以&#xff0c;本文使用 360加固美团Wallet …

c++11 标准模板(STL)(std::unordered_map)(五)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…