opencv操作图片是很方便的,能够对图片更进一步处理,例如合并图片、添加水印等
图片的基本原理
彩色图片
如果一个图片是彩色的图片,那么每个像素有3个数字(0-255),0表示黑色,255表示白色,RGB(R-red 红色,G-green 绿色,B-blue 蓝色),通常所说的颜色顺序是 RGB,但是openCV由于历史原因,它的彩色像素中的顺序不是RBG而是BGR。不管是RGB还是 BGR,彩色图片的像素用数字表示都是(0-255,0-255,0-255)
黑白图片
如果一个图片是黑白的图片,那么每个像素只需要用一个数字来表示 (0-255),0表示黑色,255表示白色。
图片的像素解析
对图片处理就是对图片每个像素的处理,图片的像素可以用一个列表来表示。
img[100, 100]
列表的第1个数字(下标为0)表示的是图片的 x 轴的像素位置,列表的第2个数字(下标为1)表示的是图片的 y 轴的像素位置,img[100, 100] 表示的是:x轴第100,y轴第100的那1个像素。
结合print的用法为:print(img[100, 100])
案例:
import cv2 img = cv2.imread('./img/dog.jpeg', 1) print(img[100, 100]) # x轴第100、y轴第100的那个像素的BGR值
结果为:
[ 52 113 77]
案例打印的结果为该图片 x 轴第100、 y 轴第100的那个像素的 BGR 的值,52是B的值,113是G的值,77是R的值。
img[100, 100, 0]
表的第1个数字(下标为0)表示的是图片的 x 轴的像素位置,列表的第2个数字(下标为1)表示的是图片的 y 轴的像素位置,列表的第3个数字(下标为2)表示的是BGR的信息。
第3个数字如果是 0 ,表示的是B (blue-蓝色)的值(0~255);第3个数字如果是 1 ,表示的是G (green-绿色)的值(0~255);第3个数字如果是 2 ,表示的是 R(red-红色)的值(0~255);
结合print的用法为:print(img[100, 100, 0])
案例:
import cv2 img = cv2.imread('./img/dog.jpeg', 1) print(img[100, 100, 0]) # x轴第100、y轴第100的那个像素的BGR值中的第1位的B的值 print(img[100, 100, 1]) # x轴第100、y轴第100的那个像素的BGR值中的第2位的G的值 print(img[100, 100, 2]) # x轴第100、y轴第100的那个像素的BGR值中的第3位的R的值
结果为:
52 113 77
打印的第1个结果 52 指的是该图片 x 轴第100、 y 轴第100的那个像素的BGR值中的第 1 位,也就是 B 的值;
打印的第2个结果 113 指的是该图片 x 轴第100、y 轴第100的那个像素的BGR值中的第 2 位,也就是 G 的值;
打印的第3个结果 77 指的是该图片 x 轴第100、y 轴第100的那个像素的BGR值中的第 3 位,也就是 R 的值;
原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/opencvchangyongcaozuozhitupiandejibencaozuo/.html