OpenCV

作者: 无量儿 | 来源:发表于2022-07-26 15:22 被阅读0次

1、Mac Anaconda 安装cv2(https://blog.csdn.net/weixin_47589258/article/details/116979520

pip3 install opencv-python

2、cv2.CascadeClassifier()(https://www.cnpython.com/qa/595868
https://www.csdn.net/tags/Ntzacg5sODMzODMtYmxvZwO0O0OO0O0O.html
https://blog.csdn.net/qq_43543515/article/details/115658773

我知道haarcascade.xml描述了我们想要检测的某些对象的一些特性。脸有鼻子,眼睛,是椭圆或汽车牌照有一行数字和字母,有特定的大小和比例。在

3、cv2.resize函数说明(https://blog.csdn.net/weixin_41466575/article/details/113058802
resize是opencv库中的一个函数,主要起到对图片进行缩放的作用。

example: 以下代码就可以将原图片转化为宽和长分别为300,300的图片。width和height可以自己任意指定,不论大小。

import cv2 as cv

width = 300
height = 300
img = cv.imread('图片所在路径')

例如cv.imread("test/1.jpg")

img = cv.resize(img,(width,height))

默认使用双线性插值法

cv.imshow("img",img)
cv.waitKey(0)
cv.destroyAllWindows()

4、cv2.cvtColor(https://blog.csdn.net/weixin_45263375/article/details/124601262
图像灰度化(这应该是所有预处理必须作的)
使用Opencv的cvtColor()函数,参数设置cv2.COLOR_RGB2GRAY(RGB图像转GRAY)

https://www.jb51.net/article/249333.htm
opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,使用中经常要遇到色彩空间的转化,以便生成mask图等操作。

可以使用下面的色彩空间转化函数 cv2.cvtColor( )进行色彩空间的转换:

HSV 表示hue、saturation、value

5、detectMultiScale函数详解(https://blog.csdn.net/itismelzp/article/details/50379359
cvHaarDetectObjects是opencv1中的函数,opencv2中人脸检测使用的是 detectMultiScale函数。它可以检测出图片中所有的人脸,并将人脸用vector保存各个人脸的坐标、大小(用矩形表示),函数由分类器对象调用:

void detectMultiScale(
const Mat& image,
CV_OUT vector<Rect>& objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size()
);

函数介绍:

参数1:image--待检测图片,一般为灰度图像加快检测速度;

参数2:objects--被检测物体的矩形框向量组;
参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;
参数4:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。
如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。
如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,
这种设定值一般用在用户自定义对检测结果的组合程序上;
参数5:flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为

    CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,

    因此这些区域通常不会是人脸所在区域;

参数6、7:minSize和maxSize用来限制得到的目标区域的范围。

6、cv2.rectangle()函数(https://blog.csdn.net/Kefenggewu_/article/details/109909087
在图片img上画长方形,坐标原点是图片左上角,向右为x轴正方向,向下为y轴正方向。左上角(x,y),右下角(x,y) ,颜色(B,G,R), 线的粗细

cv2.rectangle(img, pt1, pt2, color, thickness, lineType, shift )

参数表示依次为: (图片,长方形框左上角坐标, 长方形框右下角坐标, 字体颜色,字体粗细)

7、cv2.imshow()(https://blog.csdn.net/qq_41703554/article/details/118683718
cv2.imshow()函数需要两个输入,一个是图像窗口的名字即title,一个是所展示图片的像素值矩阵。

上述代码应改为:
cv2.imshow(‘gray_scale’ ,gray_scale)

gray_scale矩阵的数据类型是np.uint8,浮点数类型会有显示异常情况。

同时需要在语句后加上:
cv2.waitKey(0)
代码运行之后才能正常显示。关闭图像窗口,命令行窗口恢复正常。

关于waitKey(k)函数:
在时间k(单位ms)内,等待用户按键(例如关闭图像窗口)触发,如果没有触发事件,则跳出等待。
若k=0,则无限等待触发事件。

8、image.resize函数(https://blog.csdn.net/u012977885/article/details/105762148?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-5-105762148-null-null.pc_agg_new_rank&utm_term=image.antialias&spm=1000.2123.3001.4430)

image.resize((width, height),Image.ANTIALIAS)

第一个参数:(width, height)指定图像宽、高值

第二个参数: Image.NEAREST :低质量; Image.BILINEAR:双线性;

                   Image.BICUBIC :三次样条插值;  Image.ANTIALIAS:高质量

9、PIL.Image 保存图片:imObj.save(img_name, quality=95)(https://blog.csdn.net/nyist_yangguang/article/details/122146459
quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。

https://blog.csdn.net/xun527/article/details/108789137
在使用PIL image处理图像要获取高质量的关键地方是下面两点:
1、处理时要用 ANTIALIAS;
2、保存时是要设置 quality;

10、cv2.GaussianBlur()详解(https://blog.csdn.net/sunjintaoxxx/article/details/121420594

  1. 高斯滤波是一种线性平滑滤波
  2. 高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
  3. 基于二维高斯函数,构建权重矩阵,进而构建高斯核,最终对每个像素点进行滤波处理(平滑、去噪)

1)原型:
cv2.GaussianBlur( SRC,ksize,sigmaX [,DST [,sigmaY [,borderType ] ] ] ) →DST
2)参数:
src –输入图像;图像可以具有任何数量的信道,其独立地处理的,但深度应CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
dst –输出与图像大小和类型相同的图像src。
ksize –高斯核大小。 ksize.width 并且 ksize.height 可以有所不同,但它们都必须是正数和奇数。或者,它们可以为零,然后从计算 sigma*。
sigmaX – X方向上的高斯核标准偏差。
sigmaY – Y方向上的高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个西格玛均为零,则分别根据ksize.width 和 进行计算 ksize.height(getGaussianKernel()有关详细信息,请参见 link);完全控制的结果,无论这一切的语义未来可能的修改,建议指定所有的ksize,sigmaX和sigmaY。
borderType –像素外推方法。

11、cv2.threshold()(https://blog.csdn.net/sunjintaoxxx/article/details/121420594
阈值的作用是根据设定的值处理图像的灰度值,比如灰度大于某个数值像素点保留。通过阈值以及有关算法可以实现从图像中抓取特定的图形,比如去除背景等。
cv2中的阈值相关函数有:

普通阈值函数threshold
自适应阈值函数adaptivthreshold
首先介绍简单阈值函数:cv2.threshold(src, thresh, maxval, type[, dst]),返回值为retval, dst
其中:
src是灰度图像
thresh是起始阈值
maxval是最大值
type是定义如何处理数据与阈值的关系。

12、利用opencv训练基于Haar特征、LBP特征、Hog特征的分类器cascade.xml(https://blog.csdn.net/lql0716/article/details/72566839

相关文章

网友评论

      本文标题:OpenCV

      本文链接:https://www.haomeiwen.com/subject/ffmoirtx.html