opencv——学习笔记(一)

opencv——学习笔记(一),第1张

opencv——学习笔记(一)

文章目录
    • 基础概念
      • 1 . 二值化
      • 2 . 灰度值
      • 3 . ROI
      • 4 . 通道
    • 常用内置函数
      • 1 . cv2.imread ( )
      • 2 . cv2.imshow( )
      • 3 . numpy.ones( )
      • 4 . numpy.hstack( )和numpy.vstack( )
    • 膨胀与腐蚀
      • 1 . 什么是膨胀和腐蚀
      • 2 . 代码

基础概念 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)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5679707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存