(一)OpenCV-Python学习—基础知识

opencv是一个强大的图像处理和计算机视觉库,实现了很多实用算法,值得学习和深究下。方便大家阅读,整理了下文章链接合集:

(一)OpenCV-Python学习—基础知识

(二)OpenCV-Python学习—对比度增强

(三)OpenCV-Python学习—图像平滑

(四)OpenCV-Python学习—形态学处理

(五)OpenCV-Python学习—边缘检测1

(六)OpenCV-Python学习—边缘检测2

(七)OpenCV-Python学习—几何形状拟合

(八)OpenCV-Python学习—轮廓查找,绘制和拟合

(九)OpenCV-Python学习—图像傅里叶变换

(十)OpenCV-Python学习—频率域滤波

1.opencv包安装

·  这里直接安装opencv-python包(非官方): pip install opencv-python

   官方文档:https://opencv-python-tutroals.readthedocs.io/en/latest/

2. opencv简单图像处理

  2.1 图像像素存储形式

    首先得了解下图像在计算机中存储形式:(为了方便画图,每列像素值都写一样了)

    对于只有黑白颜色的灰度图,为单通道,一个像素块对应矩阵中一个数字,数值为0到255, 其中0表示最暗(黑色) ,255表示最亮(白色)对于采用RGB模式的彩色图片,为三通道图,Red、Green、Blue三原色,按不同比例相加,一个像素块对应矩阵中的一个向量, 如[24,180, 50],分别表示三种颜色的比列, 即对应深度上的数字,如下图所示:

需要注意的是,由于历史遗留问题,opencv采用BGR模式,而不是RGB

  2.2 图像读取和写入

    cv2.imread()

imread(img_path,flag) 读取图片,返回图片对象
    img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None
    flag:cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1
          cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0
          cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1
    cv2.imshow()


imshow(window_name,img):显示图片,窗口自适应图片大小
    window_name: 指定窗口的名字
    img:显示的图片对象
    可以指定多个窗口名称,显示多个图片
    
waitKey(millseconds)  键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)
    millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件
    
destroyAllWindows(window_name) 
    window_name: 需要关闭的窗口名字,不传入时关闭所有窗口

    cv2.imwrite()

imwrite(img_path_name,img)
    img_path_name:保存的文件名
    img:文件对象
  使用示例:

 View Code
  2.3 图像像素获取和编辑

    像素值获取:


img = cv2.imread(r"C:\Users\Administrator\Desktop\roi.jpg")

#获取和设置
pixel = img[100,100]  #[57 63 68],获取(100,100)处的像素值
img[100,100]=[57,63,99] #设置像素值
b = img[100,100,0]    #57, 获取(100,100)处,blue通道像素值
g = img[100,100,1]    #63
r = img[100,100,2]      #68
r = img[100,100,2]=99    #设置red通道值

#获取和设置
piexl = img.item(100,100,2)
img.itemset((100,100,2),99)

    图片性质


import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\roi.jpg")

#rows,cols,channels
img.shape   #返回(280, 450, 3), 宽280(rows),长450(cols),3通道(channels)
#size
img.size    #返回378000,所有像素数量,=280*450*3
#type
img.dtype   #dtype('uint8')

   ROI截取(Range of Interest)


#ROI,Range of instrest
roi = img[100:200,300:400]  #截取100行到200行,列为300到400列的整块区域
img[50:150,200:300] = roi   #将截取的roi移动到该区域 (50到100行,200到300列)
b = img[:,:,0]  #截取整个蓝色通道

b,g,r = cv2.split(img) #截取三个通道,比较耗时
img &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值