Opencv Api

cv.imread  读取一个图片
cv.namedWindow 命名一个窗口
cv.imshow显示图片
cv.waitKey 等待按键
cv.destroyAllWindows 销毁所有窗口
cv.VideoCapture 读取视频文件或者摄像头数据
cv.flip 图像 镜像

np.array(image) 求出图像像素

image.shape 求出图像的 长 宽 通道数

    height = image.shape[0]
    width = image.shape[1]
    channels = image.shape[2]

cv.bitwise_not(image) 像素反转

np.zeros([400, 400, 3], np.uint8) , 设置图像数据全为0

np.ones([400, 400, 3], np.uint8),设置图像数据全为1

cv.imwrite("D:/myImage.png", img),将img另存为 myimage.img

m2 = m1.reshape([1, 9]) 重新修改图像

cv.getTickCount() 得到当前计数

(t2-t1)/cv.getTickFrequency(); 计算出消耗时间(ms)

cv.cvtColor(frame, cv.COLOR_BGR2HSV) 将BGR图片转换位HSV

gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)将BGR图片转换位灰度图像

yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)将BGR图片转换位YUV图像

Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)将BGR图片转换位YCrCb图像

 

cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv) 选的指定范围的图像颜色

bitwise_and 对图像每个像素值进行二进制“与”操作
bitwise_or对图像每个像素值进行二进制“或”操作
bitwise_xor对图像每个像素值进行二进制“异或”操作,1^1=0,1^0=1,0^1=1,0^0=0
bitwise_not对图像每个像素值进行二进制“非”操作,~1=0,~0=1
 

dst = cv.add(m1, m2) 图像加

dst = cv.subtract(m1, m2)图像减

dst = cv.divide(m1, m2) 图像除

dst = cv.multiply(m1, m2) 图像乘

dst = cv.addWeighted(image, c, blank, 1-c, b) 图像叠加

C++: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray
dst, int dtype=-1)

Parameters
src1 – First source array.
alpha – Weight for the first array elements.
src2 – Second source array of the same size and channel number as src1 .
beta – Weight for the second array elements.
dst – Destination array that has the same size and number of channels as the input arrays.
gamma – Scalar added to each sum.
dtype – Optional depth of the destination array. When both input arrays have the same
depth, dtype can be set to -1, which will be equivalent to src1.depth().
The function addWeighted calculates the weighted sum of two arrays as follows:
dst(I) = saturate(src1(I) alpha + src2(I) beta + gamma)
where I is a multi-dimensional index of array elements. In case of multi-channel arrays, each channel is processed
independently.
The function can be replaced with a matrix expression:
dst = src1*alpha + src2*beta + gamma;
 

 

M1, dev1 = cv.meanStdDev(m1)  求均值 标准差

image.copy()  复制图像

cv.floodFill(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE) 图像填充

cv.blur(image, (5, 5))  滤波函数(邻域内所有单的均值作为插值)

cv.medianBlur(image, 5)  中值滤波 :邻域内中间排序的那个值作为插值(最常用)

cv.filter2D(image, -1, kernel=kernel) 对图像做自定义 卷积核的卷积运算

cv.GaussianBlur 高斯模糊 :邻域内越靠近的值提供越大的权重计算平均值作为插值(较常用高斯分布取得权重)

np.random.normal(size,loc,scale):  给出均值为loc,标准差为scale的高斯随机数(场).

dst = cv.bilateralFilter(image, 0, 100, 15)  边缘保留滤波  双边滤波 是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存

dst = cv.pyrMeanShiftFiltering(image, 10, 50) 均值漂移 边缘保留滤波

plt.hist(image.ravel(), 256, [0, 256])  绘制图像直方图

hist = cv.calcHist([image], [i], None, [256], [0, 256])  计算图像直方图

 plt.plot(hist, color=color)  显示直方图

cv.equalizeHist(gray)  全局直方图均衡化

cv.createCLAHE(clipLimit=5.0, tileGridSize=(8, 8)) 局部直方图均衡化

 

    match1 = cv.compareHist(hist1, hist2, cv.HISTCMP_BHATTACHARYYA)
    match2 = cv.compareHist(hist1, hist2, cv.HISTCMP_CORREL)
    match3 = cv.compareHist(hist1, hist2, cv.HISTCMP_CHISQR)
    print("巴氏距离: %s, 相关性: %s, 卡方: %s"%(match1, match2, match3))

 

cv.normalize(roiHist, roiHist, 0, 255, cv.NORM_MINMAX)  归一化数据。该函数分为范围归一化与数据值归一化

dst = cv.calcBackProject([target_hsv], [0, 1], roiHist, [0, 180, 0, 256], 1) 反向投影

result = cv.matchTemplate(target, tpl, md) 模板匹配

cv.rectangle(target, tl, br, (0, 0, 255), 2) 画矩形

ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY|cv.THRESH_OTSU) 直接阈值化

最大类间方差法(OTSU)是找到自适应阈值的常用方法

binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)  自适应阈值化

cv.pyrUp(pyramid_images[i], dstsize=image.shape[:2])  图像金字塔

cv.convertScaleAbs(dst)  线性变换转换输入数组元素成8位无符号整型

 grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)   做scharr算子

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值