opencv ——学习笔记(一)

基础概念

1 . 二值化

二值化(Binarization)意将非二值图像经过计算变成二值图像,它进行图像分割(Segmentation)最简单的一种方法,即后续图像处理技术的基础(简化后期的处理,提高处理速度),可以将灰度图像转化成二值图像。一般用它将感兴趣的目标和背景分离,比如:将人脸图像分为皮肤区域和非皮肤区域,将图像文字转换成PDF文字(黑/白)等等。因此,图像二值化可以看做是聚类或者分类。

2 . 灰度值

灰度值指把白色与黑色之间按对数关系分成若干级,称为“灰度等级”。范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像,在医学、图像识别领域有很广泛的用途。

3 . ROI

ROI(region of interest),即感兴趣区域。OpenCV使用rect可以提取出来图像的ROI。

4 . 通道

颜色通道大概分为分为R,G,B,A,L 这几类,分别是:
R:红色成分,通常范围从0.0(没有红色)到1.0(全部的红色)
G:绿色成分,通常范围从0.0(没有绿色)到1.0(全部的绿色)
B:蓝色成分,通常范围从0.0(没有蓝色)到1.0(全部的蓝色)
A:alpha(不透明度)成分,通常范围从0.0(完全透明)到1.0(不透明)
L:亮度成分,通常范围从0.0(黑暗)到1.0(全白)

常用内置函数

1 . cv2.imread ( )

import cv2

img = cv2.imread('1.jpg', cv2.IMREAD_UNCHANGED)  #包含alpha通道
img = cv2.imread('1.jpg', cv2.IMREAD_COLOR)      #彩色图像
img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)  #灰度图像                                                                          

2 . cv2.imshow( )

## 测试图片
pic = '1.jpg'
## a.图像的二值化 ,这里没有做阈值处理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
## 原始图
cv2.imshow('origin',src)

imshow(name,img)里面有两个参数,第一个是窗口名字,第二个是图像

3 . numpy.ones( )

numpy.ones()函数返回给定形状和数据类型的新数组,其中元素的值设置为1。
numpy.ones(shape, dtype=None, order=‘C’)

shape是一个int或一个int元组,用于定义数组的大小。 如果我们仅指定一个int变量,则将返回一维数组。 对于一个整数元组,将返回给定形状的数组。

dtype是一个可选参数,默认值为float。 它用于指定数组的数据类型,例如int。

order是在内存中以行优先(C风格)还是列优先(Fortran风格)顺序存储多维数组。

4 . numpy.hstack( )和numpy.vstack( )

numpy.hstack( )是图像水平合并 h:horizon
numpy.vstack( )是图像垂直合并 v : vertical

膨胀与腐蚀

1 . 什么是膨胀和腐蚀

图像的膨胀(Dilation)和腐蚀(Erosion)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。
膨胀:将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大。
腐蚀:将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

2 . 代码

import cv2
import numpy as np
 
## 测试图片
pic = '1.jpg'
## a.图像的二值化 ,这里没有做阈值处理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
## b.设置卷积核5*5
kernel = np.ones((5,5),np.uint8)
## c.图像先腐蚀后膨胀,迭代次数为1
erosion = cv2.erode(src,kernel,iterations=1)
dilation = cv2.dilate(erosion,kernel,iterations=1)
## 原始图
cv2.imshow('origin',src)
## 结果图
res1 = np.hstack((src,erosion,dilation))  ## np.hstack是将图片横向合并显示
res2 = np.vstack((src,erosion,dilation))  ## np.hstack是将图片竖向合并显示
cv2.imshow('rsult1',res1)
cv2.imshow('rsult2',res2)
# 任意键终止
cv2.waitKey(0)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WFForstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值