OpenCV入门学习记录---1、图像的基本操作
本主题记录均在ubuntu系统下,且已安装python环境
1.1 图像的IO操作
首先读取图像
import numpy as np #numpy
是一个用于科学计算的库,提供了大量的数学函数和操作多维数组的能力。
import cv2 as cv #cv2
是OpenCV库的Python接口,用于图像处理和计算机视觉任务。cv2
被重命名为cv
,这样在代码中就可以使用cv
来引用OpenCV的功能。
img = cv.imread('/home/pengsongjie/mydrive/image/bird_2.jpg',0) #cv.imread
函数用于读取指定路径的图像文件,第二个参数0
表示以灰度模式读取图像
接着显示图像
if img is None:
print("无法读取图像") #检查图像路径是否正确
else:
cv.imshow('image',img) #cv.imshow
函数用于在窗口中显示图像,第一个参数是窗口名称,第二个参数是要显示的图像。
cv.waitKey(0) #cv.waitKey(0)
函数等待用户按键,参数0
表示无限期等待。这意味着程序会在这里暂停,直到用户按下任意键。
最后保存图像
cv.imwrite('bird_2.png',img)
代码写好后回到命令行输入
python3 display_image_1.py 即可获得黑白bird_2图像,并且在文件内生成bird_2.png文件
1.2 在图像上绘制图
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt #matplotlib.pyplot
用于图像的显示。
# 1 创建图像
img = np.zeros((512,512,3),np.uint8) #使用numpy
的zeros
函数创建一个尺寸为512x512像素,3个颜色通道(RGB)的黑色图像。np.uint8
指定了图像中每个像素值的数据类型,即无符号8位整数。
# 2 绘制图形
cv.line(img,(0,0),(511,511),(255,0,0),5) #cv.line
函数在图像上绘制一条从点(0,0)到点(511,511)的红色线段,线宽为5个像素。
cv.circle(img,(256,256),60,(0,0,255),-1) #cv.circle
函数在图像上绘制一个中心在(256,256),半径为60像素的蓝色实心圆。
cv.rectangle(img,(100,100),(400,400),(0,255,0),5) #cv.rectangle
函数在图像上绘制一个左上角在(100,100),右下角在(400,400)的绿色矩形,边框宽度为5个像素。
cv.putText(img,"hellow peng",(10,150),cv.FONT_HERSHEY_COMPLEX,2,(255,255,255),3) #cv.putText
函数在图像上绘制文本“hellow peng”,位置在(10,150),使用FONT_HERSHEY_COMPLEX
字体,字体大小为2,颜色为白色,字体厚度为3个像素。
# 3 显示图形
plt.imshow(img[:,:,::-1])
plt.show()
1.3 修改图像中像素点
由于是直接修改参数后显示图像,为方便显示就使用jupyter notebook来运行
命令行中直接输入 jupyter notebook(前提是已安装Jupyter Notebook)
找到对应目录位置建立新的 .ipynb文件
随后开始获取像素点,修改像素点颜色
随后操作是获取图像的的属性
随后操作是图像通道的拆分与合并
随后是转换图像颜色的代码
**************************************************************************************************************************************************************************************************************************************************
总结:
1、图像IO操作的API:
cv.imread():读取图像
cv.inshow():显示图像
cv.imwrite():保存图像
2、在图像上绘制几何图像
cv.line():绘制直线
cv.circle():绘制圆形
cv.rectangle():绘制矩形
cv.putText():在图像上添加文字
3、直接使用行列索引获取图像中的像素并进行修改
4、图像的属性
image.shape:形状
image.size:大小
image.dtype:数据类型
5、拆分通道 :cv.split()
通道合并 :cv.merge()
6、色彩空间的改变
cv.cvtColor(input_image,flag)
- 点赞
- 收藏
- 关注作者
评论(0)