opencv-python图像处理 ---直方图与傅里叶变换、逆变换

Python代码实现
摘要由CSDN通过智能技术生成

一、直方图
代码里的cv-show函数:

def cv_show(img):
    cv.imshow("hh", img)
    cv.waitKey(0)
    cv.destroyAllWindows()

从统计的角度讲,直方图是图像内灰度值的统计特性与图像灰度图之间的函数,直方图统计图像内各个灰度级出现的次数。从直方图的图形上观察,横坐标是图像中各像素点的灰度级,纵坐标是具有该灰度级的像素个数。
cv2中的函数使用:

hist = cv2.calcHist([src], channels, mask, histSize, ranges, accumulate)

src:对应输入图像,其图像格式为uint8或者float32,需要用[]括起来传入
channels: 指定通道编号,也需要[],如果是灰度图,channels=[0], 如果是彩色图像,channels=[0]、[1]、[2],分别对应B, G, R
mask:掩模图像。当统计整幅图像的直方图时,将这个值设为None, 统计某一部分时,需要用到掩模图像。
histSize:BINS的值,使用需要[]括起来,BINS的意思是:参数子集的数目,在处理数据过程中,有时需要将众多的数据划分为若干组,再进行分析。
ranges:像素值的范围,八位像素值就是[0~255]
accumulate:布尔型累计标记。如果不为假,则直方图再开始计算时不会清零,而是在上一次运行的基础上继续进行统计。
代码:

def calc_hist():
    img = cv.imread("car_red.jpg", cv.IMREAD_GRAYSCALE)
    dis = cv.calcHist([img], [0], histSize=[256], ranges=[0, 255], mask=None)
    plt.hist(img.ravel(), 256)
    plt.show()

掩码操作:使用掩码可以获得图像的某一部分图像:

def calc_hist():
    img = cv.imread("car_red.jpg", cv.IMREAD_GRAYSCALE)
    # 创建掩模
    mask = np.zeros(img.shape, np.uint8)
    mask[50:250, 50:400] = 255
    cv_show(mask)
    # 将原图像与mask执行与操作,就能得到mask位置的图像
    mask_img = cv.bitwise_and(img, mask)
    cv_show(mask_img)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值