python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测

这篇博客介绍了如何使用Python和OpenCV进行机器视觉技术的应用,包括宽度测量、缺陷检测。宽度测量通过选取矩形、阈值分割等步骤计算距离;缺陷检测则涉及图像处理和深度学习在工业表面缺陷检测中的应用。
摘要由CSDN通过智能技术生成

 本篇博客接着讲解机器视觉的有关技术和知识。包括宽度测量,缺陷检测,医学处理。

一:宽度测量

  在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺、游标卡尺、塞尺等。而这些测量手段测量精度低、速度慢,无法满足大规模的自动化生产需求。基于机器视觉的尺寸测量属于非接触式的测量,具有检测精度高、速度快、成本低、安装简便等优点。可以检测零件的各种尺寸,如长度、圆、角度、线弧等测量。

  利用python+opencv方法可以进行宽度的测量。步骤是先选取出一个矩形,然后进行阈值分割,再进行反色,边缘提取之后进行点的选择,输出坐标做出两条线段,根据线段进行矩形绘制,这样之后就可以计算两条直线之间的距离,也就是我们需要求得的宽度。

  OpenCV是一个c++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。配合python调用c++库,可以很方便地进行宽度测量,实现要求。

  步骤如下:

1.导入需要的库

import cv2
import cv2 as cv
import numpy as np
import imutils

2.读取原图像查看

img = cv2.imread("1.jpg")

3.截取部分图像

  手动地进行选取我们感兴趣的部分,然后截取出来。

img = imutils.resize(img, width=500)
roi = cv2.selectROI(windowName="image1", img=img, showCrosshair=True, fromCenter=False)
x, y, w, h = roi
cv2.rectangle(img=img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2)
s = img[y:y+h,x:x+w]

4.反色

  截取后会出现空白区域很多黑色的情况,需要进行反色,用到的方法是255去除值。

# 反色
def colorReverse(src):
	height, width, channels = src.shape
	for row in range(height):
	    for list in range(width):
	        for c in range(channels):
	            pv = src[row, list, c]
	            src[row, list, c] = 255 - pv
	return src
src = colorReverse(s)

5.边缘检测去噪

x = cv2.Sobel(src,cv2.CV_16S,1,0)
y = cv2.Sobel(src,cv2.CV_16S,0,1)
absX = cv2.convertScaleAbs(x)   # 转回uint8
absY = cv2.convertScaleAbs(y)
dst = cv2.addWeighted(absX,0.5,absY,0.5,0)
result = colorReverse(dst)

6.输出鼠标选择点的坐标

  之后进行的操作是利用鼠标选择点,并显示坐标,可以判断时候用鼠标进行点击操作,如果是的话,就可以输出点的坐标在输出框或者图片上标记,把点击函数作为参数,就可以在不点击退出键的时候进行循环递归操作,知道最直到获得想要点的坐标。

# 输出鼠标选择点的坐标
# setMouseCallback使用的回调函数,这个回调函数在捕获到鼠标左键点击事件时,就在图片上点击处绘制一个实心的圆、并显示出坐标。
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        xy = "%d,%d" % (x, y)
        print (xy)
        cv2.circle(result, (x, y), 1, (255, 0, 0), thickness = -1)
        cv2.putText(result, xy, (x, y), cv2.FONT_HER
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青年夏日科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>