目录

  • 1 OpenCV入门
    • 1.1 如何使用
    • 1.2 图像读入、显示与保存
  • 2 图像处理基础
    • 2.1 图像处理入门基础
    • 2.2 像素处理
    • 2.3 numpy访问像素
    • 2.4 获取图像属性
    • 2.5 感兴趣区域ROI
    • 2.6 通道操作
  • 3 图像运算
    • 3.1 图像加法
    • 3.2 图像融合
    • 3.3 位平面分解
    • 3.4 图像加密和解密
    • 3.5 数字水印
  • 4 色彩空间类型转换
    • 4.1 色彩类型转换
  • 5 几何变换
    • 5.1 图像缩放
    • 5.2 图像翻转
  • 6 阈值处理
    • 6.1 阈值理论知识
    • 6.2 阈值处理实践
  • 7 图像平滑处理
    • 7.1 均值滤波
    • 7.2 方框滤波
    • 7.3 高斯滤波
    • 7.4 中值滤波
  • 8 形态学操作
    • 8.1 图像腐蚀
    • 8.2 图像膨胀
    • 8.3 开运算
    • 8.4 闭运算
    • 8.5 梯度运算
    • 8.6 礼帽操作
    • 8.7 黑帽图像处理
  • 9 图像梯度
    • 9.1 Sobel理论基础
    • 9.2 Sobel算子及函数使用
    • 9.3 Scharr算子及函数使用
    • 9.4 Sobel算子和Scharr算子的比较
    • 9.5 Laplacian算子及函数使用
  • 10 canny边缘检测
    • 10.1 Canny边缘检测原理
    • 10.2 Canny函数及使用
  • 11 图像金字塔
    • 11.1 理论基础
    • 11.2 pyrDown函数及使用
    • 11.3 pyrUp函数及使用
    • 11.4 采样可逆性的研究
    • 11.5 拉普拉斯金字塔
  • 12 图像轮廓
    • 12.1 图像轮廓操作
  • 13 直方图
    • 13.1 直方图的概念
    • 13.2 绘制直方图
    • 13.3 使用OpenCV统计直方图
    • 13.4 绘制OpenCV统计直方图
    • 13.5 使用掩膜的直方图
    • 13.6 掩膜原理及演示
    • 13.7 直方图均衡化原理
    • 13.8 直方图均衡化函数equalizeHist
    • 13.9 subplot函数的使用
    • 13.10 matplotlib.pyplot.imshow函数的使用
    • 13.11 直方图均衡化对比
  • 14 傅里叶变换
    • 14.1 傅里叶变换的理论基础
    • 14.2 numpy实现傅里叶变换
    • 14.3 numpy实现逆傅里叶变换
    • 14.4 高通滤波演示
    • 14.5 OpenCV实现傅里叶变换
    • 14.6 OpenCV实现逆傅里叶变换
    • 14.7 低通滤波示例
获取图像属性






一:获取图像属性

1 形状:行、列、通道数

shape 可以获取图像的形状,返回包含行数,列数,通道数的元组。

灰度 返回行数,列数

彩色 返回行数,列数,通道数

 

范例

import cv2

img1=cv2.imread(‘灰度图像')

print(img1.shape)

## (512,512)

 

import cv2

img2=cv2.imread(‘彩色图像')

print(img2.shape)

## (512,512, 3)

 

2 像素数目

size 可以获取图像的像素数目。

灰度 返回:行数*列数

彩色 返回:行数*列数*通道数

 

范例

import cv2

img=cv2.imread(‘图像名')

print(img.size)

 

## 786432

3.图像的数据类型

dtype 返回的是图像的数据类型。

范例

import cv2

img=cv2.imread(‘图像名称')

print(img.dtype)

## uint8

二:图像ROI

ROIregion of interest),感兴趣区域。

从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。

可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。

import cv2

img=cv2.imread('图像名称')

face=img[200:400,200:400]

import cv2

img=cv2.imread('图像名称')

face=img[200:400,200:400]

img[200:400,600:800]=face

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png",cv2.IMREAD_UNCHANGED)

face=np.ones((101,101,3))

cv2.imshow("original",a)

face=a[220:400,250:350]

cv2.imshow("face",face)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png",cv2.IMREAD_UNCHANGED)

face=np.ones((101,101,3))

cv2.imshow("original",a)

face=a[220:400,250:350]

a[0:180,0:100]=face

cv2.imshow("result",a)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png",cv2.IMREAD_UNCHANGED)

b=cv2.imread("image\girl.bmp",cv2.IMREAD_UNCHANGED)

face=np.ones((101,101,3))

cv2.imshow("originalA",a)

cv2.imshow("originalB",b)

face=a[220:400,250:350]

b[0:180,0:100]=face

cv2.imshow("result",b)

cv2.waitKey()

cv2.destroyAllWindows()

#2.13获取lena的脸部信息,并将其全部打印出来
import cv2
a=cv2.imread("lenacolor.png",-1)
face=a[220:400,250:350]
cv2.imshow("yuanshi",a)
cv2.imshow("face",face)
cv2.waitKey()

cv2.destroyAllWindows()

运行结果:

2.14对lena图像的脸部进行打码
#根据题目要求,编写代码如下:
import cv2
import numpy as np
a=cv2.imread("lenacolor.png",-1)
cv2.imshow("original",a)
face=np.random.randint(0,256,(180,100,3))
a[220:400,250:350]=face
cv2.imshow("result",a)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:

2.15将一副图像内的ROI复制到另一副图像内
import cv2
lena=cv2.imread("lena512.bmp",-1)
dollar=cv2.imread("dollar.bmp",-1)
cv2.imshow("lena",lena)
cv2.imshow("dollar",dollar)
face=lena[220:400,250:350]
dollar[160:340,200:300]=face
cv2.imshow("result",dollar)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果: