#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 21 12:42:15 2019@author: lg
"""import cv2
import numpy as np# 形态学处理
def Process(img):# 高斯平滑gaussian = cv2.GaussianBlur(img, (3, 3), 0, 0, cv2.BORDER_DEFAULT)# 中值滤波median = cv2.medianBlur(gaussian, 5)# Sobel算子# 梯度方向: xsobel = cv2.Sobel(median, cv2.CV_8U, 1, 0, ksize=3)# 二值化ret, binary = cv2.threshold(sobel, 170, 255, cv2.THRESH_BINARY)# 核函数element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 1))element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 7))# 膨胀dilation = cv2.dilate(binary, element2, iterations=1)# 腐蚀erosion = cv2.erode(dilation, element1, iterations=1)# 膨胀dilation2 = cv2.dilate(erosion, element2, iterations=3)return dilation2def GetRegion(img):regions = []# 查找轮廓contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)for contour in contours:area = cv2.contourArea(contour)if (area < 5000):continueeps = 1e-3 * cv2.arcLength(contour, True)approx = cv2.approxPolyDP(contour, eps, True)rect = cv2.minAreaRect(contour)box = cv2.boxPoints(rect)box = np.int0(box)height = abs(box[0][1] - box[2][1])width = abs(box[0][0] - box[2][0])ratio =float(width) / float(height)if (ratio < 5 and ratio > 1.8):regions.append(box)return regionsdef detect(img):gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)prc = Process(gray)regions = GetRegion(prc)return regions#输入的参数为图片的路径
img = cv2.imread('red.jpg')
b=detect(img)
b1=b[0]hm=b1[:,1].max()
hn=b1[:,1].min()cm=b1[:,0].max()
cn=b1[:,0].min()# -*- coding=GBK -*-
import cv2 as cv
import numpy as np#截取图片中的指定区域或在指定区域添加某一图片
def jie_image(src1):src2 = src1[hn:hm,cn:cm]#截取第5行到89行的第500列到630列的区域cv.imshow("截取", src2)cv2.imwrite('jiequ.jpg', src2)
#    src1[105:189, 300:430] = src2#指定位置填充,大小要一样才能填充
#    cv.imshow("合成", src1)src = cv.imread("cc.jpeg")
#cv.imshow("原来", src)
jie_image(src)
cv.waitKey(0)
cv.destroyAllWindows()


opencv 仪表数字切割相关推荐

  1. OpenCV车牌/数字识别

    opencv 数字识别 附完整代码 Opencv的应用之车牌识别       用的支持向量机 使用opencv进行数字识别       对学习还是有点帮助的 Tensorflow 实现 MNIST 手 ...

  2. opencv识别数字

    转自:https://blog.csdn.net/ltg01/article/details/50492556 最近要做数字识别这块,但是自己又完全不懂这个,网上搜资料搜了好多,但是都没找到完整代码. ...

  3. 基于OpenCV的数字识别系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 综述 2012年iOS应用商店中发布了一个名为FuelMate的G ...

  4. 图像分割 c语言程序,OpenCV实现图像切割功能

    openCV实现将图像切成m*n块,供大家参考,具体内容如下 一.代码部分: #include "stdafx.h" #include #include #include #inc ...

  5. python中的opencv读取数字_opencv+python 机读卡识别之试错(一)模板匹配的数字识别...

    图像来源于第四部分的数字,用任意截图工具截取部分图像当作模板,比如这样: 将模板与图像对比,这个方法根据matchTemplate函数只能选出整幅图里最匹配的图像,并不能找出所有,若想找出所有,必须不 ...

  6. 一文详解opencv摄像头数字识别

    OpenCV数字识别 一.数字识别的两种方式 1.1 轮廓提取法 1.2 行列扫描法 二.提取图像中的ROI区域 2.1 读取摄像头图像 2.2 对图像进行二值化处理 2.3 形态学处理 2.4 设置 ...

  7. opencv简易数字识别

    前言 使用opencv,进行简单的数字识别 注意:此案例中的数字识别仅当做学习参考,想要真正实现数字识别,实际情况复杂很多 思路 ①图片预处理,将图片转灰度后再二值化,使其变成白字黑底 ②查找外接矩形 ...

  8. SpringBoot整合opencv实现全景图切割

    SpringBoot整合openCV实现360全景相机拍摄的全景图切割,话不多说,直接上代码 1.获取opencv-452.jar 首先,切割全景图需要使用到openCV的依赖jar,这个jar可以通 ...

  9. 仪表数字图像识别的传统方法

    虽然现有很多机器学习算法能够准确地识别数字,但是传统方法对于一些需要离线识别且计算能力有限的下位机设备来说,仍然有非常不错的效果.因此,今天就向大家讲解一下传统的数字识别方法在仪表读数方面的应用. 1 ...

最新文章

  1. 计算机的磁盘地址格式,如何查看电脑硬盘是GPT分区还是MBR分区
  2. python 判断列表为空_Python 判断列表为空
  3. iPhone 15 Pro有望实现屏下面容识别 三星已在研发相关技术
  4. 通用日志系统开发【转】
  5. VirtualBox6.0安装及配置
  6. iirf有时有效,有时返回404错误的解决方法
  7. 华为系列设备优先级总结(二)
  8. 智能优化算法:细菌觅食优化算法 - 附代码
  9. 遍历文件夹下的所有文件
  10. 浅谈Netty相关概念
  11. C语言入门:函数递归与写法
  12. 详解Python函数如何重载?
  13. 为mandriva 2010 spring打包(geany-0.19.2)
  14. Python批量爬取某图片网站图片
  15. 架构师实践日 8.18 北京站 | 智慧教育的智慧化探索,引领高效学习新出路
  16. BZOJ3993[SDOI2015]星际战争 【最大流+二分答案】
  17. “鲨鱼仿生学”iGame主板即将迎来新形象
  18. apmserv php7,apmserv
  19. Linux环境下安装部署redis
  20. VM30031:1 Uncaught ReferenceError: xxx is not defined

热门文章

  1. 七、Linux串口编程
  2. python常见问题
  3. git 远程分支和tag标签的操作
  4. 这些大酒店用大数据和分析技术对我们做了什么?
  5. 《OpenGL ES应用开发实践指南:Android卷》—— 2.2 不要从头开始
  6. 分享几个在线生成网址二维码的API接口
  7. orcal 数据库密码修改(表密码,sys密码,system密码)
  8. 剑指offer:表示数值的字符串cpp题解:指针
  9. CSP认证201703-4 地铁修建[C++题解]:连通路径上的最大边权最小、bfs求边权为1的最短路、二分查找
  10. Leetcode1694. 重新格式化电话号码[C++题解]:字符串模拟题