python-opencv-像素操作
每个像素都由颜色组成,常见的颜色存储格式有RGB和bgr两种,虽然两者都是由红色通道、绿色通道和蓝色通道组成,但是顺序不同。OpenCV采用的颜色存储格式是bgr。需要注意的是,灰度图片是单一颜色通道。
通过mread()方法获取的图像数据是一个矩阵,我们可以将图像看成一个多维的list,其中第一维和第二维分别表示图像的宽高,第三维则是像素内容。明白这一点后,我们就可以通过操作list来获取指定位置的像素点。
import cv2 img = cv2.imread("1.png") print(img) print(img[0,0]) #获取第一行第一列的像素--获取指定像素
#参数1 是列坐标 参数2 是横坐标
print('第一列数据') print(img[:,0]) #获取第一列数据 print('第一行数据') print(img[0,:]) #第一行数据 #可以看到,每个像素点都是由三个数组成的元组,这三个数分别表示bgr的蓝色通道数值、绿色通道数值和红色通道数值
像素是整个图像的最小单位,拿到图像的像素后,我们就可以通过修改像素来对图像“为所欲为”了
import cv2 img = cv2.imread("1.png") i=img[100,100] (b,g,r)=i print(i,b,g,r) for x in range(0,101): #从(100,100)到(200,100)画一条竖直的蓝线 img[100+x,100]=(250,0,0) #指定点修改像素值 cv2.imshow("new window", img) cv2.waitKey(0)
效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)