首页 今日头条正文

梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python根底API,有氧运动

欢迎重视:小白CV

重视可了解更多CV,ML,DL范畴基础/最新常识;

假如你觉得小白CV对您有协助,欢迎点赞/保藏/转发

做核算机视觉无论如何都绕不开的一个结构便是OpenCV,能够毫不夸大的说,github上每个开源的视觉项目的装置列表中都有OpenCV结构。很多人榜首次触摸OpenCV都是从OpenCV-Python版别SDK开端的,本文就以最新版别的OpenCV4.1.0为例,经过代码带领我们简略粗犷的入门OpenCV-Python编程实践。

装置OpenCV-Python

只需要履行如下一条命令行即可

pip install opencv-python

假如想连扩展模块一同装置,履行如下命令行

pip install opencv-contrib-python

更多请参阅这儿

https://pypi.org/project/opencv-python/

代码演示部分

包括OpenCV图画处理最高频次运用API与常见毕庆堂各种运用技巧。

导入CV模块

import cv2 as cv
import numpy梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动 as np

解说:这个是因为OpenCV在python语言中的一切图画数据都是以numpy的数组办法安排存储。所以有必要装置numpy依靠支撑,导入以备后用。

加载与实际图留守美人的丧命邂逅像

src = cv.imread("D:/images/lena.jpg")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

解说:千万凤山村的孩子别给中文途径神州苍龙录,不支撑的,默许加载图画五颜六色,通道次序BGR。

转化为灰度

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
print(src.shape)
print(gray.shape)

解说:支撑各种颜色空间转化,能够转化到灰度,HSV、YCrCb、LAB等常见颜色空间,图画的宽、高、通道数,能够经过src.shape得到。

创立空白图画

black = np.zeros_like(src)
cv.imshow("black", black)

解说:创立一张与src巨细与数据类型共同的图画,可是像素值悉数为0,黑色布景图画。

调理亮度

black[:,:,:] = 50
lighter = cv.add(src, black)
darker = cv.subtract(src, black)
cv.imshow("lightness", lighter)
cv.imshow("darkness", darker)

解说:过像素操作完成图画亮度调整,实质是调整图画的RGB值

调理对比度

dst = cv.addWeighted(src, 1.2, black, 0.0, 0)
cv.imshow("contrast", dst)

解说:经过权重的图画相加完成图画对比度调整,这儿要特别注意,两幅图画的巨细与数据类型有必要完全共同。

扩大/缩小 图画

# scale
h, w, c = src.shape
dst = cv.resize(src, (h//2, w//sifucun2))
cv.imshow("resize-image", dst)

解说:图画放缩支撑常见的插值办法,最近邻,线性,双立方等。

翻转

# 左右翻转
dst = cv.flip(src, 1)
cv.imshow("flip", dst)
# 上下翻转
dst = cv.flip(src, 0)
cv.imshow("flip0", dst)

解说:图画的镜像翻转支撑,水平与笔直

旋转

M = cv.getRotationMatrix2D((w//2, h//2),45, 1)
dst = cv.warpAffine(src, M, (w, h))
cv.imshow("rotate", dst)

解说:图画的旋转支撑,根据放射改换,M = 2x3的改换矩阵

颜色改换

# HSV
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)
# 颜色表 - 支撑14种颜色改换
dst = cv.applyColorMap(src, cv.COLORMAP_AUTUMN)
cv.imshow("color ta解救马疯子ble", dst)

解说:支撑图画常见的14种查找表颜色匹配与风格改变,是自带的14种颜色滤镜

含糊

blur = cv.blur(src, (15, 15))
cv.imshow("blur", blur)

解说:图画卷积含糊操作,卷积核巨细为15x15

高斯含糊

gblur = cv.GaussianBlur(src, (0, 0), 15)
cv.imshow("gaussian blur", gblur)

解说:图画高斯含糊操作,sigma = 15

自界说滤波器

k = np.ones(shape=[5, 5], dtype=np.float32) / 25
dst = cv.filter2D(src, -1, k)
cv.imshow("custom blur", dst)

解说:图画自界说滤波操作,界说不同的滤波器,得到不同的滤波作用,这儿是均值滤波,含糊操作。

高斯双方滤波

dst = cv.bilateralFilter(src, 0, 100, 10)
cv.imshow("bi-filter", dst)

解说:边际保存滤波算法的一种,OpenCV还支撑其它的边际保存滤波算法。

图画梯度

dx = cv.Sobel(src, cv.CV_32F, 1仲浩林, 0)
dy = cv.Sobel(src, c赤道银行是什么意思v.CV_32F, 0, 1)
dx = cv.convertScaleAbs(dx)
dy = cv.convertScaleAbs(dy)
cv.imshow("grad-x", dx)
cv.imshow("grad-y", dy)

解说:图画梯度提取,根据一阶导数算子Sobe梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动l

边际检测

edge = cv.Canny(src, 100, 300)
cv.imshow("edge", edge)

解说:图画边际提取,Canny是经典的图画边际提取算法。100表明低阈值,300表明高阈值。

直方图均衡化

eh = cv.equalize中华榜首警卫杜心武Hist(gray)
cv.imshow("eh", eh)朔风秋水

解说:图画直方图均衡化,是图画直方图使用之一,其它还有直方图匹配,直方图姐姐保卫战类似度,直方图反向投影等。这儿的均衡化是大局均衡化,对应还有部分自适应的直方图均衡化办法。

角点检测

corners = cv.goodFea极地狐turesToTrack(gray, 100, 0.05, 10)
# p巫婆造美人rint(len(corners))
for pt in corners:
# print(pt)
b = np.random.random_integ梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动ers(0, 256)
g = np.random.random_integers(0, 256)
r = np.random.random_integers(0, 256)
x = np.int32(pt[0][0])
y = np.int32(pt[0][1])
cv.circle(src, (x, y), 5, (int黄征老婆(b), int(g), int(r))罗西贝微博, 2)
cv.imshow("corners detection", src)

解说:根据shi-tomas角点检测算法

二值化加载图画

src = cv.imread("D:/images/zsxq/zsxq_12.jpg")
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow("binary input", gray)

解说:加载二值化操作测验图画

固定阈值

ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)
cv.imshow("binary", binary)

解说:手动指定阈值为127,THRESH_BINARY表明大于127为白色,反之为黑色。

大局阈值

ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("otsu", binary)

解说:主动核算阈值,根据大局直方图信息

自适应阈值

binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, 25, 10)
cv.imshow("ada", binary)

解说:自适应阈值核算办法,支撑高斯与盒子两种办法。

概括剖析

contours, hireachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
result = np.zeros_like(src)
for cnt梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动 in range(len(cont梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动ours)):
cv.drawContours(超级银河兄妹result, contours, cnt, (0, 0, 255), 2, 8)
cv.imshow("contour", result)

解说:二值图画的概括与结构剖析API,演示,这儿仅仅获取了最外层概括。

胀大与腐蚀操作

se = cv.getStructuringElement(cv.MORPH_RECT, (5, 5), (-1, -1))
d = cv.dilate(binary,证帝诸天 se)
e = cv.erode(binary, se)潘娇阳
cv.imshow("dilate", d)
cv.imshow("erode", e)

解说:二值图画的形态学基础操作,腐蚀与胀大

开闭操作

op = cv.morphologyEx(binary, cv.MORPH_OPEN, se)
cl = cv.morphologyEx(binary, cv.MORPH_CLOSE, se)
cv.imshow("open", op)
cv.imshow汉方豆蔻茶官网("close", cl)

解说:二值图画的形态学组合操作,开操作与闭操作

上述悉数演示代码的代码下地址:

https://github.com/gloomyfish1998/opencv_tut梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动orial

往期回忆

1.面试常见问题之---见招拆招

2.ROC点评目标最全攻略及Python完成

3.FP、FN、TP、TN、准确率(Precision)、召回率(Recall)、准确率(Accuracy)点评目标胪陈

4.秋招简历这样写,拿offer的几率更大哦(附赠简历模板)

5.[高清视频回放]AICC2019人工智能核算大会8-27/28


小白CV将在榜首时间发布CV/AI新动态,收拾好文章

(最近会愈加重视与秋招,Good Luck)

原文地址:https梦到牙齿掉了,别不信,100行代码,带你玩转OpenCV-Python基础API,有氧运动://mp.weixin.qq.com/s/GQCVhOscI5eCN5ZWe8Cnhw

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。