day 11 绘制轮廓

#-*- coding:utf-8 -*-

import cv2
import numpy as np

#1.导入图像
#img = cv2.imread("home.jpg",0)   #因为还有在原始图像绘制轮廓,不能读入灰度图像
img = cv2.imread("home.jpg")

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#2.二值化处理,
ret,thresh = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY)

#3.查找轮廓
image,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
                #第1参数:输入图像
                #第2参数:轮廓检索方式
                #第3参数:轮廓近似方法 cv2.CHAIN_APPROX_SIMPLE(矩形框) cv2.CHAIN_APPROX_NONE(点)

#第1返回值 图像
#第2返回值  轮廓(是list列表,寸纯图像中的所有轮廓,每个轮廓是个Numpy数组(x,y))
#第3返回值  轮廓的层析结构

#4.绘制轮廓
#imgage = cv2.drawContours(img,contours,-1,(0,255,0),2)
                         #第1参数:原始图像
                        # 第2参数:轮廓,1个python列表
                        # 第3参数:轮廓的索引(-1时绘制所有轮廓)
                        # 第4参数:轮廓颜色
                        # 第5参数:轮廓厚度

#5.绘制外界矩形
for cnt in contours:       #从list列表取出每个轮廓
    if cv2.contourArea(cnt) < 1500:
        continue
    x,y,w,h = cv2.boundingRect(cnt)
    #x,y 矩形顶点(左上角)   w,h(矩形宽高)
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

cv2.imshow(‘dilation‘,img)
cv2.waitKey(0)
cv2.destroyAllWindows()

    

时间: 2024-10-11 11:49:47

day 11 绘制轮廓的相关文章

查找并绘制轮廓[OpenCV 笔记XX]

好久没有更新了,原谅自己放了个假最近又在赶进度,所以...更新的内容是很靠后的第八章,因为最近工作要用就先跳了,后面会更新笔记编号...加油加油! 在二值图像中寻找轮廓 void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() ) image: 输入图像,需为8位单

【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形

FindContours 在二值图像中寻找轮廓 int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) ); image  输入的 8-比特.单通道图像.

HTML5 SVG简单的动态绘制轮廓线条动画插件

walkway是一款非常简单的HTML5 SVG动态绘制轮廓线条动画插件.它支持SVG的path,line 和 polyline元素.walkway使用起来简单方便,可以制作出非常酷的SVG线条动态绘制效果.更好的动态绘制线条插件可以参考:html5 svg线条动态绘制文字轮廓边框动画.HTML5 SVG图形轮廓线条绘制动画插件-vivus 和 html5 svg线条动态绘制iphone边框动画效果. 在线演示:http://www.htmleaf.com/Demo/201501261282.h

查找并绘制轮廓

1 寻找轮廓:findContours()函数 void findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierarchy,int mode,int method,Point offset=Point()) 2 绘制轮廓:drawContours()函数 void drawContours(InputOutputArray image,InoutArrayOfArrays contours

【计算机视觉】OpenCV篇(9) - 轮廓(寻找/绘制轮廓)

什么是轮廓? 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形. 轮廓与边缘好像挺像的? 是的,确实挺像,那么区别是什么呢?简而言之,轮廓是连续的,而边缘并不全都连续(见下图示例).其实边缘主要是作为图像的特征使用,比如可以用边缘特征可以区分脸和手,而轮廓主要用来分析物体的形态,比如物体的周长和面积等,可以说边缘包括轮廓. 边缘和轮廓的区别(图片来源:http://pic.ex2tron.top/cv2_understand_contours.jpg) 寻找轮廓的操作一般用于二值化图,所以通

Minecraft Client 教程 #11 绘制主菜单

首发于Enaium的个人博客 一. 搜索GuiMainMenu这个类 二. 删除drawScreen方法内所有 三. 删除无用方法(显示为灰色的方法) 四. 在drawScreen方法绘制 public void drawScreen(int mouseX, int mouseY, float partialTicks) { //获取屏幕长和高 ScaledResolution s = new ScaledResolution(mc); //绑定纹理(材质) mc.getTextureManag

OpenCV——查找、绘制轮廓(实际是把连通域填上某种颜色)

原文地址:https://www.cnblogs.com/long5683/p/9692417.html

opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形

一.简介 二.外接矩形的查找绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 void main() 4 { 5 //外接矩形的查找绘制 6 Mat srcImg =imread("E://12.jpg"); 7 imshow("src",srcImg); 8 Mat dstImg = srcImg.clone(); //原图备份 9 cvtColor(srcImg, srcIm

opencv学习之路(24)、轮廓查找与绘制(三)——凸包

一.简介 二.绘制点集的凸包 1 #include<opencv2/opencv.hpp> 2 using namespace cv; 3 4 void main() 5 { 6 //---绘制点集的凸包 7 Mat img(400, 400, CV_8UC3, Scalar::all(0)); //定义绘制图像 8 RNG rng; //定义随机数对象 9 while(1) 10 { 11 char key; 12 int count = (unsigned int)rng % 100; /