一、imread
Mat imread(const String& filename,int flags = IMREAD_COLOR);
返回Mat对象;
参数filename: 待打开图片的绝对地址,需要注意的是,并不是所有文件都可以用它打开,它支持的文件如下;函数识别不是依靠文件的后缀名,而是依靠内容的编码格式;
需要注意的是imread读取数据时会重新排列数据。
参数flags:打开的参数,这个非常重要,因为如果设置不合适的话,很容易出现预想之外的效果。它可以指导将原图读取时进行一定的转换。默认值是IMREAD_LOAD_GDAL。因此,如果是想直接处理原图,应该设置为IMREAD_UNCHANED。
常用的一般是下面三种
当然为了简单起见,我们可以用数字设置,如果写为1最后输出就显示原图,如果写为0,最后输出就显示灰度图。
二、imshow
cv2.imShow(const string& winname, InputArray mat)
函数可以在窗口中显示图像。该窗口和图像的原始大小自适应(自动调整到原始尺寸)。
imshow 函数用于在指定的窗口中显示图像。如果窗口是用CV_WINDOW_AUTOSIZE(默认值)标志创建的,那么显示图像原始大小。否则,将图像进行缩放以适合窗口。而imshow 函数缩放图像,取决于图像的深度:
三、waitKey
cv2.waitKey(ms)
是一个和键盘绑定的函数,它的作用是等待一个键盘的输入(因为我们创建的图片窗口如果没有这个函数的话会闪一下就消失了,所以如果需要让它持久输出,我们可以使用该函数)。它的参数是毫秒级。该函数等待任何键盘事件的指定毫秒。Ms=0如果您在此期间按下任何键,程序将继续进行。我们也可以将其设置为一个特定的键。
四、destroyALLWindows
cv2.destroyWindow()
销毁我们创建的所有窗口。如果要销毁任何特定窗口,请使用函数cv2.destroyWindow(),其中传递确切的窗口名称作为参数。(应该是使用创建窗口时所使用的窗口名称,字符串类型。)
五、namedWindow
顾名思义,namedWindow函数,用于创建一个窗口。函数原型是这样的:
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
第一个参数,const string&型的name,即填被用作窗口的标识符的窗口名称。
第二个参数,int 类型的flags ,窗口的标识,可以填如下的值:
函数剖析:
六、imwrite
在OpenCV中,输出图像到文件,我们一般都用imwrite函数,它的声明如下:
bool imwrite(const string& filename,InputArray img, const vector
七、split
b,g,r=cv2.split(img)
我之前说过彩色图像是由BGR三个通道组成的,也就是三个0-255的数组
如果把彩色图片拆分后,那么得到的应该是三张灰色图像
八、merge
BGR=cv2.merge([b,g,r])
与split恰恰相反,把三个通道的颜色合成图像
九、addWeighted
addWeighted( src1, alpha, src2, beta, 0.0, dst)
计算的方式如下:
十、CvtColor
函数形式: void cvCvtColor( const CvArr* src, CvArr* dst, int code );
参数列表:
src:源图像(输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像)
dst:目标图像(输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像)
code:转换代码
十一、resize
scr:原始图像
dsize:缩放的大小,(a,b)a是代表有多少列,b代表多少行
2. cv2.resize(scr,dsize,fx,fy);
scr:原始图像
dsize为空时,fx,fy表示缩放为原来的倍数(可以小于1)
十二、flip
flip(src,flipCode);
src:原始图像
flipCode:
十三、threshold
ret, dst = cv2.threshold(src, thresh, maxval, type)
src: 输入图,只能输入单通道图像,通常来说为灰度图
dst: 输出图
thresh: 阈值=ret,一般情况指定128
maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值
type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
十四、boxFilter
boxFilter(原始图像,目标图像深度,核大小,normalize属性);
十五、GaussianBlur
GaussianBlur(str,ksize,sigmax)
str:原始图像
ksize:核大小,必须是奇数
sigmax:X方向的方差,控制权重,一般取0,自动根据核大小计算
十六、medianBlur
相当于用中值代替
medianBlur(img, Ksize)
Ksize:核大小,必须是大于1的奇数
十七、erode
cv2.erode(scr,kernel,iterations)
scr:原始图像
kernel:卷积核,正方形,生成方式np.ones((5,5),np.uint8)
iteration:迭代次数,默认为1
十八、dilate
cv2.dilate(scr,kernel,iterations)
scr:原始图像
kernel:卷积核,正方形,生成方式np.ones((5,5),np.uint8)
iteration:迭代次数,默认为1
十九、morphologyEx
开运算就是先腐蚀再膨胀,去掉噪声在还原
cv2.morphologyEx(img,cv2.MORPH_OPEN, kernel)
cv2.MORPH_OPEN:开运算
闭运算先膨胀再腐蚀
cv2.morphologyEx(img,cv2.MORPH_CLOSE, kernel)
cv2.MORPH_CLOSE:闭运算
梯度操作
梯度=膨胀-腐蚀
得到图像轮廓
cv2.morphologyEx(img,cv2.MORPH_GRADIENT, kernel)
cv2.MORPH_GRADIENT:梯度操作
礼帽操作
礼帽操作=原始图像-开运算图像
最终得到的就是噪声
cv2.morphologyEx(img,cv2.MORPH_TOPHAT, kernel)
cv2.MORPH_TOPHAT:礼帽操作
黑帽操作
黑帽操作=闭运算-原始输入
最终得到的就是噪声
cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.MORPH_BLACKHAT:黑帽操作