OpenCV进阶系列
OpenCV系统化整理,以及python和c++代码实现。
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
MachineLP
成功收获成果,失败收获智慧,投入收获快乐!
展开
-
OpenCV之二值图像 联通组件寻找
python代码:import cv2 as cvimport numpy as npdef connected_components_demo(src): src = cv.GaussianBlur(src, (3, 3), 0) gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)原创 2021-08-11 15:04:03 · 596 阅读 · 1 评论 -
OpenCV之图像二值化与去噪
python代码:import cv2 as cvimport numpy as npdef method_1(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) t, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) return binarydef method_2(image): blurred = .原创 2021-08-11 14:59:18 · 1669 阅读 · 0 评论 -
OpenCV之图像二化自适应阈值算法
python代码:import cv2 as cvimport numpy as np## THRESH_BINARY = 0# THRESH_BINARY_INV = 1# THRESH_TRUNC = 2# THRESH_TOZERO = 3# THRESH_TOZERO_INV = 4#src = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src原创 2021-08-11 14:56:29 · 552 阅读 · 0 评论 -
OpenCV之图像二值寻找算法 – TRIANGLE
python代码:import cv2 as cvimport numpy as np#import tensorflow as tf# tf.enable_eager_execution()## THRESH_BINARY = 0# THRESH_BINARY_INV = 1# THRESH_TRUNC = 2# THRESH_TOZERO = 3# THRESH_TOZERO_INV = 4#src = cv.imread("./test.png")cv.namedWin原创 2021-08-11 14:54:19 · 624 阅读 · 0 评论 -
OpenCV之图像二值寻找算法 – OTSU
python代码:import cv2 as cvimport numpy as np## THRESH_BINARY = 0# THRESH_BINARY_INV = 1# THRESH_TRUNC = 2# THRESH_TOZERO = 3# THRESH_TOZERO_INV = 4#src = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)原创 2021-08-11 14:52:31 · 229 阅读 · 0 评论 -
OpenCV之基本阈值操作
python代码:import cv2 as cvimport numpy as np## THRESH_BINARY = 0# THRESH_BINARY_INV = 1# THRESH_TRUNC = 2# THRESH_TOZERO = 3# THRESH_TOZERO_INV = 4#src = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)原创 2021-08-11 14:51:02 · 179 阅读 · 0 评论 -
OpenCV之二值图像介绍
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)T = 127# 转换为灰度图像gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)h, w = gray.shapeT = cv.mean(gray)[0]print("原创 2021-08-11 14:49:20 · 572 阅读 · 0 评论 -
OpenCV之图像模板匹配
python代码:import cv2 as cvimport numpy as npdef template_demo(): src = cv.imread("./test.png") tpl = cv.imread("./test01.png") cv.imshow("input", src) cv.imshow("tpl", tpl) th, tw = tpl.shape[:2] result = cv.matchTemplate(src,原创 2021-08-11 14:47:33 · 284 阅读 · 0 评论 -
OpenCV之拉普拉斯金字塔
python代码:import cv2 as cvimport numpy as npdef laplaian_demo(pyramid_images): level = len(pyramid_images) for i in range(level-1, -1, -1): if (i-1) < 0: h, w = src.shape[:2] expand = cv.pyrUp(pyramid_images原创 2021-08-11 14:46:04 · 268 阅读 · 0 评论 -
OpenCV之图像金字塔
python代码:import cv2 as cvdef pyramid_down(pyramid_images): level = len(pyramid_images) print("level = ",level) for i in range(level-1, -1, -1): expand = cv.pyrUp(pyramid_images[i]) cv.imshow("pyramid_down_"+str(i), expand)原创 2021-07-30 15:57:19 · 155 阅读 · 0 评论 -
OpenCV之Canny边缘检测器
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)# t1 = 100, t2 = 3*t1 = 300edge = cv.Canny(src, 100, 300)cv.imshow("mask image", edge)cv.imwrite("./edge.原创 2021-07-30 15:51:50 · 356 阅读 · 0 评论 -
OpenCV之USM 锐化增强算法
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)# sigma = 5、15、25blur_img = cv.GaussianBlur(src, (0, 0), 5)usm = cv.addWeighted(src, 1.5, blur_img, -0.5,原创 2021-07-30 15:50:43 · 528 阅读 · 0 评论 -
OpenCV之图像锐化
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)# sharpen_op = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]], dtype=np.float32)sharpen_op = np.array([原创 2021-07-23 15:31:06 · 928 阅读 · 1 评论 -
OpenCV之图像梯度 – 拉普拉斯算子(二阶导数算子)
python代码:import cv2 as cvimport numpy as npimage = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", image)h, w = image.shape[:2]src = cv.GaussianBlur(image, (0, 0), 1)dst = cv.Laplacian(src, cv.CV_32F, ksize=原创 2021-07-23 15:11:05 · 762 阅读 · 0 评论 -
OpenCV之更多梯度算子
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)robert_x = np.array([[1, 0],[0, -1]], dtype=np.float32)robert_y = np.array([[0, -1],[1, 0]], dtype=np.float原创 2021-07-21 20:18:32 · 138 阅读 · 0 评论 -
OpenCV之Sobel算子
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)h, w = src.shape[:2]x_grad = cv.Sobel(src, cv.CV_32F, 1, 0)y_grad = cv.Sobel(src, cv.CV_32F, 0, 1)x_grad原创 2021-07-21 20:10:41 · 290 阅读 · 0 评论 -
OpenCV之自定义滤波器
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)blur_op = np.ones([5, 5], dtype=np.float32)/25.shape_op = np.array([[0, -1, 0], [-1, 5,原创 2021-07-21 20:06:07 · 453 阅读 · 1 评论 -
OpenCV之快速的图像边缘滤波算法
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)h, w = src.shape[:2]dst = cv.edgePreservingFilter(src, sigma_s=100, sigma_r=0.4, flags=cv.RECURS_FILTER)re原创 2021-07-21 20:04:05 · 412 阅读 · 1 评论 -
OpenCV之图像积分图算法
python代码:import cv2 as cvimport numpy as npdef get_block_sum(ii, x1, y1, x2, y2, index): tl = ii[y1, x1][index] tr = ii[y2, x1][index] bl = ii[y1, x2][index] br = ii[y2, x2][index] s = (br - bl - tr + tl) return sdef blur_原创 2021-07-21 19:53:27 · 207 阅读 · 0 评论 -
OpenCV之边缘保留滤波算法 – 均值迁移模糊(mean-shift blur)
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)h, w = src.shape[:2]dst = cv.pyrMeanShiftFiltering(src, 15, 30, termcrit=(cv.TERM_CRITERIA_MAX_ITER+cv.TERM原创 2021-07-18 15:06:29 · 251 阅读 · 0 评论 -
OpenCV之边缘保留滤波算法 – 高斯双边模糊
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)h, w = src.shape[:2]dst = cv.bilateralFilter(src, 0, 100, 10)result = np.zeros([h, w*2, 3], dtype=src.dtyp原创 2021-07-18 15:03:03 · 164 阅读 · 0 评论 -
OpenCV之图像去噪声
python代码:import cv2 as cvimport cv2 as cvimport numpy as npdef add_salt_pepper_noise(image): h, w = image.shape[:2] nums = 10000 rows = np.random.randint(0, h, nums, dtype=np.int) cols = np.random.randint(0, w, nums, dtype=np.int)原创 2021-07-18 14:53:00 · 1049 阅读 · 0 评论 -
OpenCV之中值模糊
import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)dst = cv.medianBlur(src, 5)cv.imshow("blur ksize=5", dst)cv.waitKey(0)cv.destroyAllWindows()#include <open.原创 2021-07-18 14:32:05 · 153 阅读 · 0 评论 -
OpenCV之图像均值与高斯模糊
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)dst1 = cv.blur(src, (5, 5))dst2 = cv.GaussianBlur(src, (5, 5), sigmaX=15)dst3 = cv.GaussianBlur(src, (0,原创 2021-07-18 14:30:45 · 139 阅读 · 0 评论 -
OpenCV之图像卷积操作
python代码:import cv2 as cvimport numpy as npdef custom_blur(src): h, w, ch = src.shape print("h , w, ch", h, w, ch) result = np.copy(src) for row in range(1, h-1, 1): for col in range(1, w-1, 1): v1 = np.int32(src[原创 2021-07-18 14:29:56 · 365 阅读 · 0 评论 -
OpenCV之图像直方图反向投影
python代码:import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef back_projection_demo(): sample = cv.imread("./Mat.png") # hist2d_demo(sample) target = cv.imread("./test.png") # hist2d_demo(target) roi_hsv = cv原创 2021-07-18 14:23:58 · 163 阅读 · 0 评论 -
OpenCV之图像噪声
python 代码:import cv2 as cvimport numpy as npdef add_salt_pepper_noise(image): h, w = image.shape[:2] nums = 10000 rows = np.random.randint(0, h, nums, dtype=np.int) cols = np.random.randint(0, w, nums, dtype=np.int) for i in rang原创 2021-07-18 14:36:00 · 677 阅读 · 0 评论 -
OpenCV之图像直方图比较
python代码:import cv2 as cvimport numpy as npsrc1 = cv.imread("./test.png") src2 = cv.imread("./Mat.png") src3 = cv.imread("./test.png") src4 = cv.imread("./test.png") cv.imshow("input1", src1)cv.imshow("input2", src2)cv.imshow("input3", src3)c原创 2021-07-15 17:04:11 · 94 阅读 · 0 评论 -
OpenCV之图像直方图均衡化
python代码:import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef custom_hist(gray): h, w = gray.shape hist = np.zeros([256], dtype=np.int32) for row in range(h): for col in range(w): pv = gray[row,原创 2021-07-15 17:02:34 · 204 阅读 · 0 评论 -
OpenCV之图像直方图
python代码:import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef custom_hist(gray): h, w = gray.shape hist = np.zeros([256], dtype=np.int32) for row in range(h): for col in range(w): pv = gray[row,原创 2021-07-15 17:00:05 · 132 阅读 · 0 评论 -
OpenCV之绘制几何形状
python代码:import cv2 as cvimport numpy as npimage = np.zeros((512, 512, 3), dtype=np.uint8)cv.rectangle(image, (100, 100), (300, 300), (255, 0, 0), 2, cv.LINE_8, 0)cv.circle(image, (256, 256), 50, (0, 0, 255), 2, cv.LINE_8, 0)cv.ellipse(image, (25原创 2021-07-15 15:59:58 · 100 阅读 · 0 评论 -
OpenCV之图像插值
python代码:import cv2 as cvsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)h, w = src.shape[:2]print(h, w)dst = cv.resize(src, (w*2, h*2), fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)cv.imshow("原创 2021-07-15 15:57:41 · 373 阅读 · 0 评论 -
OpenCV之图像翻转
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)# X Flip 倒影dst1 = cv.flip(src, 0);cv.imshow("x-flip", dst1);# Y Flip 镜像dst2 = cv.flip(src, 1);cv.imsho原创 2021-07-15 15:56:13 · 144 阅读 · 0 评论 -
OpenCV之视频读写
python代码:import cv2 as cvimport numpy as npcapture = cv.VideoCapture("./test.avi")# capture = cv.VideoCapture(0) 打开摄像头height = capture.get(cv.CAP_PROP_FRAME_HEIGHT)width = capture.get(cv.CAP_PROP_FRAME_WIDTH)count = capture.get(cv.CAP_PROP_FRAME原创 2021-07-15 15:51:13 · 88 阅读 · 0 评论 -
OpenCV之图像像素归一化
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)# 转换为浮点数类型数组gray = np.float32(gray)print(gray)# scale and shi原创 2021-07-15 15:47:59 · 1133 阅读 · 0 评论 -
OpenCV之图像像素值统计
python代码:import cv2 as cvimport numpy as npsrc = cv.imread("./test.png", cv.IMREAD_GRAYSCALE)cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)min, max, minLoc, maxLoc = cv.minMaxLoc(src)print("min: %.2f, max: %.2f"% (min, max))原创 2021-07-15 15:46:44 · 1024 阅读 · 0 评论 -
OpenCV之色彩空间与色彩空间转换
python代码:import cv2 as cvsrc = cv.imread("test.jpg")cv.namedWindow("rgb", cv.WINDOW_AUTOSIZE)cv.imshow("rgb", src)# RGB to HSVhsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)cv.imshow("hsv", hsv)# RGB to YUVyuv = cv.cvtColor(src, cv.COLOR_BGR2YUV)cv原创 2021-07-14 19:33:48 · 124 阅读 · 0 评论 -
OpenCV之图像通道分离合并
python代码:import cv2 as cvsrc = cv.imread("./test.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)# 蓝色通道为零mv = cv.split(src)mv[0][:, :] = 0dst1 = cv.merge(mv)cv.imshow("output1", dst1)# 绿色通道为零mv = cv.split(src)mv[1][:原创 2021-07-14 19:32:32 · 171 阅读 · 0 评论 -
OpenCV之图像像素操作(逻辑操作)
python代码:import cv2 as cvimport numpy as np# create image onesrc1 = np.zeros(shape=[400, 400, 3], dtype=np.uint8)src1[100:200, 100:200, 1] = 255src1[100:200, 100:200, 2] = 255cv.imshow("input1", src1)# create image twosrc2 = np.zeros(shape=[400原创 2021-07-14 19:29:30 · 288 阅读 · 0 评论 -
OpenCV之图像伪彩色增强
python代码:import cv2 as cvsrc = cv.imread("test1.png")cv.namedWindow("input", cv.WINDOW_AUTOSIZE)cv.imshow("input", src)dst = cv.applyColorMap(src, cv.COLORMAP_COOL)cv.imshow("output", dst)# 伪色彩image = cv.imread("test0.jpg")color_image = cv.app原创 2021-07-14 19:28:34 · 921 阅读 · 0 评论