OpenCV入门学习记录---1、图像的基本操作

举报
Pengpengpeng 发表于 2024/10/31 19:11:56 2024/10/31
【摘要】 1、图像IO操作的API 2、在图像上绘制几何图像 3、直接使用行列索引获取图像中的像素并进行修改 4、图像的属性 5、拆分、合并通道 6、色彩空间的改变

本主题记录均在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) #使用numpyzeros函数创建一个尺寸为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)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。