简单的预处理操作

运用opencv完成的基本的预处理操作

# -*- coding: UTF-8 -*-
import cv2
import numpy as np

def recognition(img):
    #灰度化
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow(‘gray‘, gray)
    cv2.waitKey(0)

#二值化
    ret, binary = cv2.threshold(gray, 109, 255, cv2.THRESH_BINARY)
    cv2.imshow(‘binary‘, binary)
    cv2.waitKey(0)

#膨胀腐蚀操作的核函数
    element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

#膨胀
    dilation = cv2.dilate(binary, element1, iterations=1)
    #腐蚀
    erosion = cv2.erode(dilation, element2, iterations=1)
    cv2.imshow(‘close‘, erosion)
    cv2.waitKey(0)

#canny算子求轮廓
    canny = cv2.Canny(erosion, 100, 200)
    cv2.imshow(‘canny‘, canny)
    cv2.waitKey(0)

#识别轮廓
    image, contours, hierarchy = cv2.findContours(canny, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

#绘制轮廓
    cv2.drawContours(img, contours, -1, (0, 0, 255), 3)
    cv2.imshow(‘contours‘, img)
    cv2.waitKey(0)
    print(‘总数:‘ + str(len(contours)//2))

imgpath = ‘test.jpg‘
img = cv2.imread(imgpath)
recognition(img)

时间: 2024-10-04 08:23:47

简单的预处理操作的相关文章

T4 生成实体和简单的CRUD操作

<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core.dll" #> <#@ assembly name="System.Data.dll" #> <#@ assembly name="System.Data.DataS

listview和简单的记事本操作

listview: 1 //每一列的列名用Columns集合添加 2 ListViewItem lv = new ListViewItem(); 3 lv.Text = s.Code.ToString();//每一行的第一列的项通过text添加 4 lv.SubItems.Add(s.Name);//每一行的其他列的项通过SubItems集合添加 5 lv.SubItems.Add(s.Sex); 6 lv.SubItems.Add(s.Birthday.ToString("yyyy年MM月dd

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

最简单直接碎片操作,动态增删改(2)

接续文章1的主activity,新增两个按钮一个是删除,一个是恢复然后添加事件,代码如下: @SuppressLint("Recycle") @Override public void onClick(View v) { // TODO Auto-generated method stub FragmentTransaction trx = getSupportFragmentManager() .beginTransaction(); switch (v.getId()) { cas

Hibernate系列(五):利用Hibernate完成简单的CRUD操作

这里利用Hibernate操作数据库完成简单的CRUD操作. 首先,我们需要先写一个javabean: package cn.itcast.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id

C#简单注册表操作实例

1.简介操作 //设置注册值 private void Button_Click(object sender, RoutedEventArgs e) { //路径及间隔符号要正确 //1.如果指定路径不存在,则创建 //2.如果指定键存在,则覆盖值 string path = "HKEY_CURRENT_USER\\myRegOne"; Registry.SetValue(path, "Expend", "hellow world!"); Mes

学会使用简单的MySQL操作

第十八章 学会使用简单的MySQL操作 在前面两个章节中已经介绍过MySQL的安装了.可是光会安装还不够.还须要会一些主要的相关操作.当然了,关于MySQL的内容也是非常多的.仅仅只是对于linux系统管理员来讲,一些主要的操作已经能够应付日常的管理工作了.至于更高深的那是DBA(专门管理数据库的技术人员)的事情了. [更改mysql数据库root的password] 首次进入数据库是不用password的 /usr/local/mysql/bin/mysql -u root Welcome t

【SSH三大框架】Hibernate基础第五篇:利用Hibernate完成简单的CRUD操作

这里利用Hibernate操作数据库完成简单的CRUD操作. 首先,我们需要先写一个javabean: package cn.itcast.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id

8天掌握EF的Code First开发系列之2 简单的CRUD操作

本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境是VS 2012,windows 7,MSSQL Server 2008 R2. 创建控制台项目 1. 新建控制台应用项目 2. 通过NuGet安装Entity Framework 6 根据.Net中的类来创建数据库 上面的步骤之后,我们就可以开始写代码了.在写代码之前,你要始终记得,每个类就是相应