1、基本库函数
cv2.imread(filepath,flags) #读入一张图像
filepath:要读入图片的完整路径
flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
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是矩阵的宽和高。
2、图像基本运算
图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。
bitwise_and、bitwise_or、bitwise_xor、bitwise_not四个按位操作函数,是将基础数学运算应用于图像像素的处理中。
bitwise_and、bitwise_or、bitwise_xor、bitwise_not这四个按位操作函数。
void bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 & src2
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 | src2
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 ^ src2
void bitwise_not(InputArray src, OutputArray dst,InputArray mask=noArray());//dst = ~src
bitwise_and():是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0
bitwise_or():是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
bitwise_xor():是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,11=0,10=1,01=1,00=0
bitwise_not():是对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,1=0,0=1
2、Image.open 和cv2.imread 的区别及其转换
Image.open 打开来的图像格式,cv2.imread 读出来是像素格式。
# 1、PIL.Image转换成OpenCV格式:
import cv2
from PIL import Image
import numpy
path = 'F:/File_Python/Resources/face_images/LZT01.jpg'
img = Image.open(path).convert("RGB")#.convert("RGB")可不要,默认打开就是RGB
img.show()
#转opencv
#img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)
img = cv2.cvtColor(np.array(img),cv2.COLOR_RGB2BGR)
cv2.imshow("OpenCV",img)
cv2.waitKey()
# 2、OpenCV转换成PIL.Image格式
import cv2
from PIL import Image
import numpy
img = cv2.imread('F:/File_Python/Resources/face_images/LZT01.jpg') # opencv打开的是BRG
cv2.imshow("OpenCV",img)
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
image.show()
cv2.waitKey()
原文链接:https://blog.csdn.net/qq_41185868/article/details/79675875