(一) Open CV 图像基础操作 --- Python实现

(一) Open CV 图像基础操作 — Python实现

Open CV默认图片通道顺序是BGR,而不是RGB。

1 引入 CV

import cv2 as cv

1.1 图像 读取

实现功能:
从文件夹中读取一张图片
代码示例:

# eg:
img = cv.imread(r'../CV-images/birds.jpg', -1)
cv.imshow('img_1', img)
cv.waitKey(0)
cv.destroyAllWindows()

代码效果
(一) Open CV 图像基础操作 --- Python实现_第1张图片
代码解析:

imread(img_path,flag) 读取图片,返回图片对象

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

imshow(window_name,img):显示图片,窗口自适应图片大小

  • window_name: 指定窗口的名字
  • img:显示的图片对象

waitKey(millseconds) 键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)

  • millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件

destroyAllWindows(window_name)

  • window_name: 需要关闭的窗口名字,不传入时关闭所有窗口

1.2 图像写入

实现功能:
将一个彩色图像转换为灰度图像 并保存到文件夹中
代码示例:

img1 = cv.imread(r'../CV-images/birds.jpg')
# 图像灰度转换 将彩色图像(三通道 BGR)转化为灰度图像(单通道图像)
img_gray = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)
# 图像降噪处理
ret, img_threshold = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
# 显示原始图片
cv.imshow('img1', img1)
# 显示 转换后的图片
cv.imshow('thre', img_threshold)

#等待 键盘输入
key = cv.waitKey(0) 
# Esc键  key = 27
if key == 27:
    print(key)
    cv.destroyAllWindows()
# 图像写入
cv.imwrite(r'./images/thre.jpg', img_threshold)

代码效果:
(一) Open CV 图像基础操作 --- Python实现_第2张图片

代码解析:

cv.cvtColor(img1, cv.COLOR_BGR2GRAY)

图像颜色空间转换:BGR —> Gray 彩色到灰色(黑白) ,Gray—> BGR 灰度(黑白)—>彩色
在 OpenCV 中有超过 150 种进行颜色空间转换的方法。但是我们经常用到的也就两种: BGR<–>Gray 和 BGR<–>HSV。要用到的函数是: cv2.cvtColor(input_image,flag),其中 flag就是转换类型。
对于 BGR->Gray 的转换,我们要使用的 flag 就是 cv2.COLOR_BGR2GRAY。
同样对于 BGR->HSV 的转换,我们用的 flag 就是 cv2.COLOR_BGR2HSV。

cv.threshold(img, threshold, maxval,type)

函数 cv.threshold 对单通道数组应用固定阈值操作。

  • img 指输入图像
  • threshold是设定的阈值
  • maxval是当灰度值大于(或小于)阈值时将该灰度值赋成的值
  • type规定的是当前二值化的方式
    这里有一篇博客关于thresholdhan函数二值化处理写的非常详细大家可以点击了解一下 >>threshold 函数详细用法

cv.imwrite(img_path_name,img)

图像写入函数

  • i mg_path_name:文件写入路径
  • img:文件对象

1.3 图像像素获取和编辑

实现功能:
获取,编辑图片中某一位置像素
代码示例:

img = cv.imread(r'../CV-images/birds.jpg')

# 获取和设置
pixel = img[100,100] # 获取(100,100)处的像素值 彩色图像为RGB  三层叠加 所以有三个像素值
print(pixel)
img[100,100] = [57,63,99]
b = img[100,100,0]
g = img[100,100,1]
r = img[100,100,2]
img[100,100,2] = 99 # 设置R通道值
print(b,g,r)

# 利用函数获取和设置
pixel = img.item(100,100,2)
img.itemset((100,100,2),98)
print(pixel)
print(img[100,100,2])

代码效果:

out:
[242 236 193]
57 63 99
99
98

1.4获取图像格式

实现功能:
获取图片中某一位置像素
代码示例

import cv2 as cv

img = cv.imread(r'../CV-images/birds.jpg')
# 图片形状
print(img.shape)
# 图片大小
print(img.size)
# 图片格式
print(img.dtype)

代码效果

out:
(450, 600, 3)
810000
uint8

1.5 ROI截取

实现功能
实现图像截取,复制
代码示例:

import cv2 as cv
img = cv.imread(r'../CV-images/birds.jpg',-1)

part = img[200:450,0:200]
img[0:250,0:200] = part

cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()

代码效果
(一) Open CV 图像基础操作 --- Python实现_第3张图片


文中图片资源下载:右键点击 另存为
(一) Open CV 图像基础操作 --- Python实现_第4张图片

你可能感兴趣的:(OpenCV,计算机视觉,opencv,cv,python)