首页 > 编程语言 >交流群里的两个实例--直接放源码了

交流群里的两个实例--直接放源码了

时间:2022-10-18 15:33:13浏览次数:68  
标签:群里 center img -- cv2 int 源码 radius 255



导 读

本文主要介绍交流群里的两个实例,直接放源码。(公众号:OpenCV与AI深度学习)

实例一

    要求:识别下图中加粗的文本内容。

交流群里的两个实例--直接放源码了_深度学习


    实现步骤:    

    【1】闭运算减少线条干扰

交流群里的两个实例--直接放源码了_灰度图_02


import numpy as np
import cv2
img= cv2.imread('test.jpg')
#cv2.imshow('src', img)

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,thres = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

k1=np.ones((9,9), np.uint8)
close = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, k1)

cv2.imwrite('close.jpg', close)
cv2.imshow('close', close)
cv2.waitKey(0)
cv2.destroyAllWindows()
print("Done!")

    【2】OCR识别,参考下面以前的文章即可

​让OCR更简单 | PaddleOCR+OpenCV实现文字识别步骤与代码演示​

​实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)​

交流群里的两个实例--直接放源码了_灰度图_03

实例二

    要求:识别下图中圆形锡点的数量和位置。

交流群里的两个实例--直接放源码了_灰度图_04


    实现步骤:        【1】转为灰度图、中值滤波

交流群里的两个实例--直接放源码了_灰度图_05

    【2】灰度图和滤波图差分、阈值分割

交流群里的两个实例--直接放源码了_公众号_06

交流群里的两个实例--直接放源码了_深度学习_07

    【3】形态学处理交流群里的两个实例--直接放源码了_灰度图_08

    【4】轮廓筛选、标注结果

交流群里的两个实例--直接放源码了_灰度图_09

    完整源码:


import numpy as np
import cv2

font=cv2.FONT_HERSHEY_SIMPLEX

img = cv2.imread('AA.png')

cv2.imshow('src', img)

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

blur = cv2.medianBlur(gray,15)

cv2.imwrite('blur.jpg',blur)

cv2.imshow('blur', blur)

diff = cv2.absdiff(gray, blur)

cv2.imshow('diff', diff)
cv2.imwrite('diff.jpg',diff)

ret,thres = cv2.threshold(diff,15,255,cv2.cv2.THRESH_BINARY)

cv2.imshow('thres', thres)
cv2.imwrite('thres.jpg',thres)

k1 = np.zeros((19, 19),np.uint8)
cv2.circle(k1,(9,9),9,(1,1,1),-1,cv2.LINE_AA)

closing = cv2.morphologyEx(thres, cv2.MORPH_CLOSE, k1, None, None, 1)#闭运算
cv2.imshow('closing',closing)

k2 = np.zeros((13, 13),np.uint8)
cv2.circle(k2,(6,6),6,(1,1,1),-1,cv2.LINE_AA)

opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, k2, None, None, 1)#闭运算
cv2.imshow('opening',opening)
cv2.imwrite('opening.jpg',opening)

contours,hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
count = 0
for cnt in contours:
center,radius = cv2.minEnclosingCircle(cnt)
if radius < 15 or radius > 30 or center[1] > 750 or (center[1] > 300 and center[1] < 520):
continue
count = count + 1
ROI = opening[int(center[1]-(radius)):int(center[1]+radius),int(center[0]-radius):int(center[0]+radius)]
dt = cv2.distanceTransform(ROI,cv2.DIST_L2,5,cv2.DIST_LABEL_PIXEL)
transImg = cv2.convertScaleAbs(dt)
cv2.normalize(transImg, transImg, 0, 255, cv2.NORM_MINMAX)
_, _, _, max_loc = cv2.minMaxLoc(transImg)
center = (max_loc[0]+center[0]-radius,max_loc[1]+center[1]-radius)
#cv2.circle(img,(int(center[0]),int(center[1])),int(radius),(0,255,0),2)
#cv2.circle(img,(int(center[0]),int(center[1])),24,(0,255,0),2)
cv2.circle(img,(int(center[0]),int(center[1])),24,(0,255,0),2)

cv2.drawMarker(img,(int(center[0]),int(center[1])),(0,0,255),
cv2.MARKER_CROSS, 20,2,8)
strCount = "count = %d" % count
cv2.putText(img,strCount,(10,60),font,1.5,(0,255,255),3)

cv2.imshow('result', img)
cv2.imwrite('result.jpg', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

—THE END—


标签:群里,center,img,--,cv2,int,源码,radius,255
From: https://blog.51cto.com/stq054188/5766763

相关文章

  • 使用OpenCV中的Structured-Light(结构光)模块做三维重建(流程 + 代码)
    导读本文主要介绍如何使用OpenCV中的结构光(Structured-Light)模块完成三维重建。(公众号:OpenCV与AI深度学习)背景介绍   从3.0版本开始OpenCV新增了结构光(Structured-......
  • SRCNN-图像超分辨的学习
    文章摘要《LearningaDeepConvolutionalNetworkforImageSuper-Resolution》的学习。本文深度学习的方法实现单张图的超分辨,其中深度学习是采用卷积神经网络来实现。这......
  • Docker 容器连接
    学习docker最好还是整个服务器,买太贵了,建议租一个,我用的是3A服务器!!!前面我们实现了通过网络端口来访问运行在docker容器内的服务。容器中可以运行一些网络应用,要让外部......
  • Java并发编程学习7-阻塞队列
    阻塞队列介绍阻塞队列之前,先来介绍下队列Queue。Queue用来临时保存一组等待处理的元素。它提供了几种非阻塞队列实现,如下:ConcurrentLinkedQueue,这是一个传统的先进先出......
  • 用DataVerse的entity来控制Powerautomate的启动时间
    整体思想为DataVerse里创建一条记录,记录包含对应的固定Powerautomate(A)的启动时间,当这条记录里设置的启动时间发生变化时,触发更改Powerautomate(A)启动时间的另一个Powerautoma......
  • TensorFlow+OpenCV实现睡意检测系统
    导读本文主要介绍如何使用Python、OpenCV、TensorFlow和Keras实现一个睡意检测系统。(公众号:OpenCV与AI深度学习)背景介绍   如今,司机的嗜睡是造成交通事故的主要原因......
  • 多臂路由配置
    1、配置路由器[Huawei]sysnameAR1[AR1]intg0/0/1[AR1-GigabitEthernet0/0/1]ipadd192.168.200.124[AR1-GigabitEthernet0/0/0]intg0/0/0[AR1-GigabitEtherne......
  • PXE无人值守安装ubuntu1804系统
       从以下截图可以看出,自动化安装ubuntu系统已经成功,进入安装软件包界面一开始错误原因: domain-name-servers配置错了,网络没通,后来改为114.114.114.114进行域名解......
  • workbench计算阀门接触比压
    在设计树Solution上插入一个ContactTool,然后Geometry装配体中选在密封件的有效密封面,再在ContactTool上插入一个Pressure 计算出来的Pressure便为有效密封面上的接触......
  • 头发扣取
    1、首先分析‘如何抠图’打开【通道面板】【复制一层蓝色通道-CRTL+L调整色阶】。2、按住【CTRL单击蓝色通道副本的缩略图】【勾选RGB】回到【图层面板】【CTRL+SHIFT+I......