前置工具
opencv的安装:打开cmd,输入pip install opencv-python
即可。
一、简单的读写操作
(1)函数介绍
-
imread(filename,flags=None)
:读取图像
filename:图像的路径
flags:读取彩色图or灰色图(flags=1为彩色图,flags=0为灰色图) -
imshow(winname, mat)
:显示图像
winname:显示图片的窗口的名字
mat:要显示的图像矩阵 -
imwrite(filename, img)
:保存图像
filename:保存到的图像路径名
img:要保存的图像矩阵
(2)实例
import cv2
image = cv2.imread(r"C:\Users\zzj\Desktop\test.png")#读取图像
print("图像宽度:%d个像素" % (image.shape[1]))#获取图像的宽度
print("图像高度:%d个像素" % (image.shape[0]))#获取图像的高度
print("图像通道数: %d" % (image.shape[2]))#获取图像的通道数
cv2.imshow('picture',mat=image[100:1000,500:1000])#第100行到第1000行和第500列到1000列的矩阵
cv2.waitKey(0)#程序暂停(一定要加上,不然显示不出图像)
二、稍稍进阶一下
(1)函数介绍
-
(b,g,r) = image[i,j]
: 获取三维矩阵(i,j)处的元素
ps:Python中图像像素是按B,G,R顺序存储的 -
newImage = image[i:j,m:n]
:第i行到第j行与第m列到第n列的交叉部分
(2)实例
更改图片某一部分的颜色:
import cv2
image = cv2.imread(r"C:\Users\zzj\Desktop\test.png")#读取图像
corner = image[0:100,0:100]#读取像素块
image[0:100,0:100] = (0,255,0);#更改读取的像素块
cv2.imshow('picture',image)
cv2.waitKey(0)#程序暂停(一定要加上,不然显示不出图像)
三、基础图形绘制
(1)函数介绍
-
line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
:画线
img:在图img上进行绘制
pt1:起点(坐标)
pt2:终点(坐标)
color:线的颜色;例如:(0,255,0)(绿色)
thickness:线的粗细程度,例如:-1,1,2,3…
其它参数默认即可。 -
rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
:画矩形
img:在图img上进行绘制
pt1:起点(矩形左上角的点)
pt2:终点(矩形右下角的点)
color:线的颜色;例如:(0,255,0)(绿色)
thickness:线的粗细程度,例如:-1,1,2,3…
其它参数默认即可。 -
circle(img, center, radius, color, thickness=None, lineType=None, shift=None)
:画圆
img:在img上绘图;
center:圆心;例如:(0,0)
radius:半径;例如:20
color:线的颜色;例如:(0,255,0)(绿色)
thickness:线的粗细程度,例如:-1,1,2,3…
其它参数默认即可。
(2)实例
画线跟矩形:
import numpy as np
import cv2
canvas = np.zeros((300,300,3)) #生成全是0的三维矩阵作为画布
green = (0,255,0)
red = (0,0,255)
#画线
cv2.line(canvas,(0,0),(300,300),green,2)
cv2.line(canvas,(300,0),(0,300),red,1)
#绘制矩形
cv2.rectangle(canvas,(10,10),(60,60),green)
#绘制实心矩形,-1代表实心
blue = (255,0,0,)
cv2.rectangle(canvas,(200,50),(225,125),blue,-1)
#展示图片
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
有规律的画圆:
import numpy as np
import cv2
canvas = np.zeros((300,300,3),dtype="uint8")#重新初始化变量canvas(三维的矩阵)
(centerX,centerY) = (int(canvas.shape[1]/2), int(canvas.shape[0]/2))#获取图像中心 ps:圆心一定要是整数类型
white = (255,255,255)#设置白色变量
for r in range(1,175,25):
cv2.circle(canvas,(centerX,centerY),r,white)#circle(图像,圆心,半径,颜色)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)