OpenCV-Python学习(5)—— OpenCV 图像像素的读写操作
2023-09-14 09:15:07 时间
1. 学习目标
- 图像像素的读写操作;
- 图像像素的遍历;
2. 像素的理解
- 像素实际大小:dpi * inches = 像素总数;
- ppi (pixels per inch):图像的采样率 (在图像中,每英寸所包含的像素数目)
- dpi (dots per inch): 打印分辨率 (每英寸所能打印的点数,即打印精度)
3. OpenCV 中像素
-
灰度图像排序
-
彩色图像排序
4. 像素的访问与赋值
4.1 获取图像维度信息;image.shape
4.1.1 灰度图像维度信息
- 获取灰度图像维度信息代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg",0)
print(image.shape)
if __name__ == "__main__":
get_image_info()
- 获取灰度图像维度信息结果
4.1.2 彩色图像维度信息
- 获取彩色图像维度信息代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg")
print(image.shape)
if __name__ == "__main__":
get_image_info()
- 获取彩色图像维度信息结果
4.2 图像访问像素:image[row,col];
4.2.1 灰度图像访问像素
- 获取灰度图像访问像素代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg",0)
print(image[100,100])
if __name__ == "__main__":
get_image_info()
- 获取灰度图像访问像素结果
4.2.2 彩色图像访问像素
- 获取彩色图像访问像素代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg")
print(image[100,100])
if __name__ == "__main__":
get_image_info()
- 获取彩色图像访问像素结果
4.3 图像赋值像素:image[row,col] = xxx;
4.3.1 灰度图像赋值像素
- 获取灰度图像赋值像素代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg",0)
image[0:100,0:100] = 255
cv.imshow('change 0 - 100:', image)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
get_image_info()
- 获取灰度图像赋值像素结果
4.3.2 彩色图像赋值像素
- 获取彩色图像赋值像素代码
import cv2 as cv
def get_image_info():
image = cv.imread("./images/butterfly.jpg")
image[0:100,0:100] = (255,0,0)
cv.imshow('change 0 - 100:', image)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
get_image_info()
- 获取彩色图像赋值像素结果
4.4 注意
- 灰度图像是单通道,像素赋值范围[0-255];
- 彩色图像是三通道,像素赋值范围([0-255],[0-255],[0-255]);(b,g,r)
- 不能将【三通道的彩色图像】像素赋值给【单通道的灰度图像】,会报错:
5. 像素遍历
OpenCV 像素遍历的本质就是numpy数组访问!!!
5.1 彩色图像像素遍历
5.1.1 彩色图像像素遍历代码
import cv2 as cv
def visit_pixel_demo():
image = cv.imread("./images/butterfly.jpg")
cv.imshow('original:', image)
h,w,c = image.shape
for row in range(h):
for col in range(w):
b,g,r = image[row,col]
image[row,col] = (255-b,255-g,255-r)
cv.imshow('visited:', image)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
visit_pixel_demo()
5.1.2 彩色图像像素遍历结果
5.2 灰度图像像素遍历
5.2.1 灰度图像像素遍历代码
import cv2 as cv
def visit_pixel_demo():
image = cv.imread("./images/butterfly.jpg",0)
cv.imshow('original', image)
h,w = image.shape
for row in range(h):
for col in range(w):
p_value = image[row,col]
image[row,col] = 255 - p_value
cv.imshow('visited', image)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
visit_pixel_demo()
5.2.2 灰度图像像素遍历结果
6. 总结
- 图像维度信息:image.shape;
- 访问图像像素:image[row,col];
- 图像赋值像素:image[row,col] = xxx;
- OpenCV 像素遍历的本质就是numpy数组访问!!!
相关文章
- 【Python】python 多线程两种实现方式
- opencv中图像伪彩色处理(C++ / Python)
- Opencv学习笔记 - 关于OpenCV的UMat 类
- Opencv学习笔记 在OpenCV中使用Mask R-CNN
- 【OpenCV-Python】教程:8-3 高动态范围 HDR
- 【OpenCV-Python】教程:4-4 SIFT (Scale-Invariant Feature Transform) 介绍
- 【OpenCV-Python】教程:4-3 Shi-Tomasi 角点检测
- Python编程:利用python编程实现对基于时间序列的数据(dataframe格式)按照指定时间范围进行单方向关联,不存在的日期补充为默认的NaN
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python编程语言学习:基于python各种库(matplotlib、Image)利用多种方法展示图片或进行图片可视化之详细攻略
- CV之OpenCV:HALCON机器视觉软件简介&OpenCV的基础概念、常用案例(打开图片/摄像头/视频)、常用函数解释大全(C++/python语言)之详细攻略
- Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- Python语言学习之文件格式后缀那些事:python和常见各种文件格式后缀介绍、使用方法之详细攻略
- 已解决cv2.error: OpenCV(4.2.0) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: erro
- Python 实现个人博客系统(附零基础python学习资料)
- Python:mysql-connector-python模块对MySQL数据库进行增删改查
- python基础===八大排序算法的 Python 实现
- Python-OpenCV图像处理-11-图像的直方图的反向投影
- 使用 OpenCV 和 Python 识别信用卡号
- Python学习笔记九之Opencv图像基本操作
- OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)
- OpenCV-Python学习(8)—— OpenCV 颜色表操作(cv.LUT、cv.applyColorMap)
- OpenCV-Python学习(7)—— OpenCV 轨迹栏操作和键盘响应操作(cv.createTrackbar、cv.getTrackbarPos、cv.waitKey)
- OpenCV-Python学习(4)—— OpenCV 图像对象的创建与赋值(numpy.zeros、numpy.zeros_like、numpy.ones)
- 一招解决报错error: OpenCV(4.2.0) C:projectsopencv-pythonopencvmodulesobjdetectsrccascadedetect.cpp
- yolov4视频目标检测:使用C++版本联合CUDA11.2的OpenCV 5.x编译生成opencv-python==5.x进行推理