首页 > 其他分享 >opencv 画轮廓

opencv 画轮廓

时间:2024-03-31 22:34:49浏览次数:16  
标签:bin kernel img image opencv np 轮廓 cv

1、读取图片

2、转为灰度图片

3、滤波降噪

4、二值化

5、形态学处理,开闭运算,腐蚀填充

6、画轮廓,外接矩形,计算面积等

基于4.0.9.80 opencv版本

 

import cv2 as cv
import numpy as np

def show(img, title):
    cv.imshow(title, img)
    cv.waitKey()
    cv.destroyAllWindows()

image = cv.imread('./image_cn_web/luomao.png')
image_gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 灰度图

image_blur = cv.GaussianBlur(image_gray, (25, 25), 0, 0) # 过滤降噪

# show(image_blur, '过滤降噪')

# 二值化
img_bin = cv.adaptiveThreshold(image_blur, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, blockSize=35, C=2)
show(img_bin, '二值化')

# 形态学处理
kernel = np.ones((3, 3), np.uint8)
img_bin_open = cv.morphologyEx(img_bin, cv.MORPH_OPEN, kernel) # 开运算

show(img_bin_open, '开运算')

kernel = np.ones((25, 25), np.uint8)
img_bin_close = cv.morphologyEx(img_bin_open, cv.MORPH_CLOSE, kernel) # 闭运算
show(img_bin_close, '闭运算')

kernel = np.ones((7, 7), np.uint8)
image_bin_open = cv.morphologyEx(img_bin_close, cv.MORPH_OPEN, kernel) # 开运算
show(img_bin_open, '开运算')

kernel = np.ones((25, 25), np.uint8)
image_bin_close = cv.morphologyEx(image_bin_open, cv.MORPH_CLOSE, kernel) # 闭运算
show(img_bin_close, '闭运算')

cnts, hierarchy = cv.findContours(image_bin_close, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

img2 = image.copy()
img_withcontours = cv.drawContours(img2, cnts, -1, (0, 0, 255), 3)
# cv.imshow('result', img_withcontours)
# cv.waitKey()
# cv.destroyAllWindows()

 

标签:bin,kernel,img,image,opencv,np,轮廓,cv
From: https://www.cnblogs.com/luckygxf/p/18107399

相关文章

  • Python之Opencv进阶教程(2):统计图片灰度级别的像素数量
    1、什么是灰度像素数量在OpenCV中,可以使用**cv2.calcHist()**函数来计算图像的直方图。直方图是一种图形统计表,用于表示图像中每个灰度级别(或颜色通道)的像素数量或密度分布。以下是一个示例代码,演示了如何使用OpenCV计算和绘制图像的直方图:2、代码importcv2ascvimpor......
  • Python之Opencv进阶教程(1):图片模糊
    1、Opencv提供了多种模糊图片的方法加载原始未经模糊处理的图片importcv2ascvimg=cv.imread('../Resources/Photos/girl.jpg')cv.imshow('girl',img)1.1平均值关键代码#Averaging平均值a......
  • Python之Opencv教程(5):识别视频中的人脸
    1、识别效果2、识别代码importcv2ascvdefface_detect_demo(img):#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector=cv.CascadeClassifier("data//haarcascade_frontalface_alt.xml")fac......
  • Python之Opencv教程(2):图像边缘检测
    1、什么是边缘检测OpenCV中的边缘检测是一种常见的图像处理技术,用于检测图像中物体边缘的位置。常用的边缘检测算法包括Sobel算子、Scharr算子、Laplacian算子和Canny边缘检测算法等。下面将介绍使用OpenCV实现这些边缘检测算法的方法。2、边缘检测的作用边缘检测是图像......
  • 1.java openCV4.x 入门-环境搭建
    专栏简介......
  • 准备Python环境学习OpenCV的使用
    安装venv模块,执行如下命令:sudoapt-getinstallpython3-venv创建venv环境,命名为images,执行如下命令:python3-mvenvimages进入新建的环境images,执行如下命令:cdimagessource./bin/activate安装Python的opencv模块,执行如下命令:pipinstallopencv-python创建测试用......
  • 使用OpenCV实现换脸
    使用OpenCV实现换脸换脸介绍算法原理与流程效果程序换脸介绍换脸技术,顾名思义,是一种在不改变原始人物的基本特征,如发型、脸颊轮廓等前提下,巧妙地将该人物的五官特征替换为另一人的五官特征的技术。算法原理与流程易容术算法的关键步骤在于精准定位图像中的人脸位置......
  • 2.java openCV4.x 入门-hello OpenCV
    专栏简介......
  • Linux下opencv环境配置
    1.准备工作(1)更新下环境sudoapt-getupdatesudoapt-getupgrade(2)安装编译器和构建工具等,若已安装,跳过即可sudoapt-getinstall-yg++#Ubuntu自带gccsudoapt-getinstall-ycmakesudoapt-getinstall-ymakesudoapt-getinstall-ywgetsud......
  • Ubuntu20.04安装openCV+contrib报错:fatal error: boostdesc_bgm.i: No such file or d
    把文件前面的数字去掉,改成boostdesc_bgm.i,不可用!!!!文件可能没有下载成功!!当时可能会编译成功,但是之后还是会报错下载缺少的相关依赖https://pan.baidu.com/s/17XhXX_cLz46bsj9ZWRkNIg提取码:p50x最好在本地解压后压缩成zip格式的,否则直接解压rar格式的会报错; 如果继续出现以......