首页 > 编程语言 >Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)

时间:2022-10-17 19:31:06浏览次数:56  
标签:center img -- imshow cv2 Halcon int 源码 blur


导读

本文主要介绍一个在低对比度图像中提取圆形轮廓的实例,并将Halcon实现转为OpenCV。

实例来源

Halcon例程dyn_threshold.hdev--动态阈值算子使用实例。

原图:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习

Halcon实现效果:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_02

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_差分_03

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_04


OpenCV实现步骤与代码

实现步骤:

【1】dyn_threshold操作替代--均值滤波+图像差分+阈值提取

【2】圆形结构元素闭运算+开运算

【3】轮廓查找+最小外接圆

【4】标注结果:圆心+外圆轮廓



逐步效果演示与代码:

完整源码:


#--公众号:OenCV与AI深度学习
#--Author:Color Space
import numpy as np

import cv2

font=cv2.FONT_HERSHEY_SIMPLEX

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

cv2.imshow('src', img)

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

blur = cv2.blur(gray, (50,50))

cv2.imshow('blur', blur)

diff = cv2.absdiff(gray, blur)

cv2.imshow('diff', diff)

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

cv2.imshow('thres', 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)

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 < 5:
continue
count = count + 1
cv2.circle(img,(int(center[0]),int(center[1])),int(radius),(0,255,0),2)
cv2.drawMarker(img,(int(center[0]),int(center[1])),(0,0,255),
cv2.MARKER_CROSS, 15,1,8)
strCount = "count = %d" % count
cv2.putText(img,strCount,(10,30),font,1.0,(255,0,0),2)

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

cv2.waitKey(0)
cv2.destroyAllWindows()

原图:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_05

均值滤波结果图:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_差分_06

差分图像:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_均值滤波_07

阈值结果:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_08

闭运算结果:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_09

开运算结果:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_深度学习_10

最终结果:

Halcon实例转OpenCV--低对比度图像中提取圆形轮廓(附源码)_均值滤波_11


更多视觉图像处理相关内容,请点击关注:OpenCV与AI深度学习。


标签:center,img,--,imshow,cv2,Halcon,int,源码,blur
From: https://blog.51cto.com/stq054188/5764026

相关文章

  • powershell
    将WindowsPowerShell更新到最新版本|D栈-DelftStackPowershell教程-IT宝库(itbaoku.cn)动力外壳画廊|家(powershellgallery.com)图库powershell字符集,......
  • useUnicode=true&characterEncoding=UTF-8 的作用
    我们在连接mysql数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8,但是问什么要添加呢?添加的作用是:指定字符的编码、解码格式。例如:mysql数......
  • CF1420E
    直接计算有多少对守卫被保护比较困难,可以计算有多少对守卫是没有被保护的。(只用考虑都没拿盾牌的就好了)设有\(t\)个守卫拿着盾牌,初始状态为\(a_{1\cdotsn}\)。这相当......
  • IfcAreaDensityMeasure
    IfcAreaDensityMeasure类型定义IfcAreaDensityMeasure是二维物体密度的量度,按单位面积的质量计算。通常以kg/m2计量。类型:REALIFC4中的新类型。 EXPRESSSpecifica......
  • 异常处理、生成器对象、生成器表达式
    异常处理、生成器对象、生成器表达式目录异常处理、生成器对象、生成器表达式一、异常常见类型二、异常处理语法结构三、异常处理的补充四、异常处理的实战应用五、生成器......
  • win11扯蛋的防火墙:远程桌面默认只添加了UDP端口规则
    win11扯蛋的防火墙:远程桌面默认只添加了UDP端口规则。开启防火墙后,导致win10以下的mstsc客户端无法访问。解决办法就是在防火墙高级设置,添加远程桌面端口(默认3389)的TCP......
  • scala基础
     06  07        08编码规范  最后一行的变量就是括号中的返回值        10             ......
  • 通过加减键设置数字0~9
    1CURR_NUMEQU30H;定义一个变量EQU23DAT_74164bitP0.6;3~10行:属于头文件,显示定义硬件资源与硬件......
  • CF309E 题解
    11:30,过题。12:50,忘记做法。吃饭时不该看未来日记的,Ynoj害人不浅(确信)。以上为个人吐槽。题目大意不知道题目翻译是个啥。。。但讨论区有大佬给出了精确的翻译。我改得......
  • DDD20 End-to-End Event Camera Driving Dataset: Fusing Frames and Events with Dee
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!AcceptedinThe23rdIEEEInternationalConferenceonIntelligentTransportationSystems(SpecialSession:......