目录
读取图像
注意:
1、imread和plt.show以及pil.image,show的区别:
2、imread中的rgb的顺序
显示图像
等待键盘输入
销毁窗口
保存一张图像
图像复制
图像颜色空间转换(灰彩互转)
图像缩放
图像旋转
图像放射变换
图像添加文字
在图像上绘制矩形
图像的四值属性
cv2.imread(filepath,flags) #读入一张图像,这里读入得到的是一个三维矩阵(h,w,α),h和w表示的是图片的大小(像素格式),α表示的是颜色通道,彩色为3,黑白为1,一般黑白图片就没有这一维,矩阵的元素值是每一个像素点的RBG值
filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道 cv2.IMREAD_GRAYSCALE:读入灰度图片 cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
都是通过读取以下图片得到的结果
imread:是以像素格式进行读取的,通过imshow呈现的是通过像素格子按照一比一的比例在电脑上呈现出来的,若图片的像素很大,甚至大于电脑屏幕的时候,图片就会溢出屏幕,即看不到图片的全貌
plt.show():是以线面的形式出现的,颜色会失真
image.show():是以图片的形式呈现的
平常我们说的顺序是rgb,但是在imread中的存储顺序是bgr
img = cv2.imread(inputimagepath) print("img.shape")#(200,200,3) print(img[:,:,0])#b print(img[:,:,1])#g print(img[:,:,2])#r(200, 200, 3) width:200 height:200 [[[112 152 224]#bgr [114 154 226] [115 157 228] ... [120 152 218] [143 170 234] [137 163 223]] [[110 151 224] [112 154 225] [111 155 226] ... [117 147 212] [138 164 224] [147 171 229]] [[104 149 223] [105 150 223] [104 152 224] ... [ 86 112 172] [ 66 89 145] [ 64 86 138]] ... [[ 19 31 35] [ 25 37 41] [ 15 26 34] ... [ 26 43 70] [ 37 55 86] [ 41 59 90]] [[ 14 26 30] [ 24 36 40] [ 12 23 31] ... [ 40 56 85] [ 59 76 109] [ 61 80 113]] [[ 12 24 28] [ 24 36 40] [ 12 23 31] ... [ 46 64 93] [ 71 88 121] [ 72 91 126]]] 进程已结束,退出代码0
cv2.imshow(wname,img) #显示图像
第一个参数是显示图像的窗口的名字 第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小
cv2.imshow('image',img)
cv2.waitKey(0) #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。 #若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow() #销毁所有窗口 cv2.destroyWindow(wname) #销毁指定窗口
cv2.imwrite(file,img,num) #保存一张图像
第一个参数是要保存的文件名 第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95。 第三个参数表示的是压缩级别。默认为3.
img.copy() #图像复制
cv2.cvtColor() #图像颜色空间转换
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) #灰度化:彩色图像转为灰度图像 img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB) #彩色化:灰度图像转为彩色图像 # cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
cv2.resize(image, image2,dsize) #图像缩放:(输入原始图像,输出新图像,图像的大小)
cv2.flip(img,flipcode) #图像翻转,flipcode控制翻转效果。
flipcode = 0:沿x轴翻转;flipcode > 0:沿y轴翻转;flipcode < 0:x,y轴同时翻转
cv2.warpAffine(img, M, (400, 600)) #图像仿射变换 :平移;裁剪、剪切、旋转、仿射变换, M、M_crop、M_shear、M_rotate
cv2.putText(img,'text',(50,150) #图像添加文字:(照片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细)
cv2.putText(image, caption, (b[0], b[1] - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), 1) cv2.putText(I,'there 0 error(s):',(50,150),cv2.FONT_HERSHEY_COMPLEX,6,(0,0,255),25)
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2) #画出矩行:img原图、(x,y)是矩阵的左上点坐标、(x+w,y+h)是矩阵的右下点坐标、(0,255,0)是画线对应的rgb颜色、2是所画的线的宽度。
cv2.boundingRect(img) #返回图像的四值属性:img是一个二值图,即是它的参数; 返回四个值,分别是x,y,w,h; x,y是矩阵左上点的坐标,w,h是矩阵的宽和高。