赞
踩
目录
首先导入opencv库
import cv2
可以使用as来修改名称
import 库名称 as 自定义名称
例如
import cv2 as cv
图像变量=cv2.imread("图片路径名",参数1)
图片路径名:
直接图片名称,记得将图片放在主函数同一文件夹下
如果不在同一文件夹下,也可以通过相对位置例如“../../1.jpg”的方式导入
注:如果路径有错误不会报错,会返回一个None
参数1:
- IMREAD_UNCHANDED(<0) alpha通道加载图像
- IMREAD_GRAYSCALE(0) 表示吧原图作为灰度图像加载进来
- IMREAD_COLOR(>0) 彩色模式加载图像
默认加载时是加载BGR图像(即每个像素点用三个变量表示,B Bule蓝色,G Green绿色,R Red红色)
#1.1
import cv2 pic=cv2.imread('1.jpg') print(pic[0,0])#(0,0,)坐标像素打印BGR颜色值 cv2.imshow("image",pic) cv2.waitKey(0)#暂停
imread函数中参数1 讨论:
(1)将上面1.1代码第2行换成
pic=cv2.imread('1.jpg',0)
(2)将上面1.1代码第2行换成
pic=cv2.imread('1.jpg',1)
pic=cv2.imread('1.jpg',-1)
和默认一样
小拓展:最简单灰度L图像转变成假彩色原理(略)
opencv中有函数cvtColor()
cv2.imshow("窗口名",图像变量)
这个函数也是以BGR模式显示图像,即显示原图
但是如果用matplotlib.pyplot.imshow()函数是以RGB模式显示,需要转换
python基本语法[]和:组合截取图像
#1.2
import cv2 pic=cv2.imread('1.jpg') cv2.imshow("RGB",pic[0:100,0:500,::-1])#翻转通道,使得成为RGB通道,但cv2.imshow()显示是BGR模式(plt显示是RGB),会使图片的B与R通道值交换,颜色变化 cv2.imshow("BGR",pic[0:100,0:500]) cv2.waitKey(0)
结果:
可以看出,坐标系原点在图片左上角,[]中第一个参数代表高度,第二个代表宽度,第三个代表颜色通道(0B,1G,2R)
cv2.imwrite("图像路径名",图像变量)
#1.3
import cv2 pic=cv2.imread('1.jpg') cv2.imwrite("save.jpg",pic) cv2.waitKey(0)
结果:
绘制直线
cv2.line(img,start,end,color,thickness)
img:图像变量
start,end:直线起始,终点
color:颜色
thickness:宽度
绘制圆形
cv2.circle(img,centerpoint,r,color,thickness)
centerpoint:圆心
r:半径
绘制矩形
cv2.rectangle(img,leftupper,rightdown,thickness)
leftupper:左上角坐标
rightdown:右下角坐标
添加文字
cv2.putText(img,text,station,font,fontsize,color,thickness)
text:文本
station:位置
font:字体
fontsize:字体大小
举例:
#1.4
import cv2 import numpy as np pic=np.zeros((600,600,3),np.uint8)#创建空白图像 cv2.line(pic,(0,0),(100,100),(50,255,6),5)#划线 cv2.circle(pic,(100,100),50,(255,255,255),1)#划圆 cv2.rectangle(pic,(200,200),(400,400),(66,55,255),10)#划矩形 cv2.putText(pic,"Hellow",(0,400),1,10,(255,0,1),1) cv2.imshow("image",pic[:,:,::-1])#RGB模式显示 cv2.waitKey(0)
RGB图像像素点是个RGB三元数组,灰度图像像素点是灰度值
img[x,y,c]=color
img:图像变量
x:x坐标值,可以用:,例如100:200获取100到200的x坐标
y:y坐标值,可以用:,例如100:200获取100到200的y坐标
c:颜色通道,不写为BGR模式,0索引B,1索引G,2索引R,可以用:
color:修改的颜色
#1.5
import cv2 as cv pic = cv.imread("1.jpg") px=pic[100,100]#(100,100)位置点三通道像素 print(px) pxBlue=pic[100,100,0]#0索引通道即B蓝色通道数值 print(pxBlue) #修改像素值 pic[100:200, 100:200]=(255, 255, 255) cv.imshow("image", pic[:, :, ::-1]) # RGB模式显示 cv.waitKey(0)
结果
#1.6
import cv2 as cv pic = cv.imread("1.jpg") print(pic.shape) print(pic.size) print(pic.dtype) cv.waitKey(0)
图像拆分
b,g,r=cv2.split(img)
图像合并
img=cv2.merge((b,g,r))
举例
#1.7
import cv2 as cv import numpy as np pic = cv.imread("1.jpg") b, g, r = cv.split(pic)#拆分BGR pic2 = cv.merge((g, b, r))#以GBR模式组合 cv.imshow("rgb",pic) cv.imshow("gbr",pic2) cv.waitKey(0)
结果
cv2.cvtColor(img,flag)
flag:
cv2.COLOR_BGR2GRAY BGR与GRAY转换
cv2.COLOR_BGR2HSV BGR与HSV转换
#1.8
import cv2 as cv pic = cv.imread("1.jpg") pic1=cv.cvtColor(pic, cv.COLOR_BGR2GRAY) pic2=cv.cvtColor(pic, cv.COLOR_BGR2HSV) cv.imshow("GRAY", pic1) cv.imshow("HSV", pic2) cv.waitKey(0)
结果
import 库名称 as 自定义名称
图像变量=cv2.imread("图片路径名",参数1)
cv2.imshow("窗口名",图像变量)
cv2.imwrite("图像路径名",图像变量)
cv2.line(img,start,end,color,thickness)
cv2.circle(img,centerpoint,r,color,thickness)
cv2.rectangle(img,leftupper,rightdown,thickness)
cv2.putText(img,text,station,font,fontsize,color,thickness)
img[x,y,c]=color
print(pic.shape)
print(pic.size)
print(pic.dtype)b,g,r=cv2.split(img)
img=cv2.merge((b,g,r))
cv2.cvtColor(img,flag)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。