【问题标题】:How to detect black object on black background using Python OpenCV如何使用 Python OpenCV 检测黑色背景上的黑色物体
【发布时间】:2022-10-26 04:01:04
【问题描述】:

我正在尝试检测黑色背景上的黑色胶带。

没有胶带,有胶带(裁剪图片):

(全尺寸图片:no tapewith tape

我首先从原始图像中裁剪了磁带的区域,然后对其进行阈值处理。下面是没有胶带时的图像:

您可以注意到有一条几乎实线。黑色胶带放在它旁边,当它被放置时,这条线变得很轻。下面是图片:

有没有什么好的图像处理技术可以用来检测何时放置黑色胶带以及何时未放置黑色胶带?

以下是我目前正在使用的代码:

import cv2
import os
import imutils
from pathlib import Path
import numpy as np

def on_mouse(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        print("X: {} | Y: {}".format(x, y))

dirPath = Path(__file__).parents[2]
imgPath = os.path.join(dirPath, "img", "img.png")
win_name = "Image"
cv2.namedWindow(win_name)
cv2.setMouseCallback(win_name, on_mouse)

img = cv2.imread(imgPath)
img = imutils.resize(img, width=800)
roiImg = img[298:337, 520:591]

img_gray = cv2.cvtColor(roiImg, cv2.COLOR_BGR2GRAY)
rett, thresh = cv2.threshold(img_gray, 50, 255, cv2.THRESH_BINARY)

cv2.imshow(win_name, img)
cv2.imshow("Thres", thresh)

cv2.waitKey(0)
cv2.destroyAllWindows()

这是测试视频的链接:https://drive.google.com/file/d/1P3Xkx_SuHidDs1UdacS3-DZqA-CiXQOX/view?usp=sharing

下面是通常放置胶带的区域用红色标记的图像

谢谢

【问题讨论】:

  • 你展示了很多正在发生的图片。请专注于对您重要的领域。 ——这会是某种自动光学检测吗?如果是这样,则该工作场所和摄像头未设置为它。
  • @ChristophRackwitz 我添加了显示通常放置磁带的区域的图像。因为它是黑底黑检测,所以很难通过图像来解释,这就是我添加视频的原因。我不确定光学检查,但会搜索一下
  • 该对象移动......对齐(在这里,ECC细化可能很好),然后是像素差异。图片的那部分很小。将相机移近很多。看看你能不能阻止东西四处移动。通常,光学检测也要求事物始终位于完全相同的位置。
  • 您还在寻找解决方案吗?
  • @AnnZen 是的,但作为临时解决方案,我使用的是手部检测模型。因此,一旦手部检测模型检测到黑带的 roi 中的手部,我就认为它已完成。

标签: python opencv image-processing computer-vision


【解决方案1】:

这里没办法写出稳定的图像处理软件。

在这种工业环境中,您会发现环境光、反射、阴影、光线不同的呈现角度、​​太阳光等方面的差异。这将比几乎不可见的胶带对图像的局部或全局亮度产生更大的影响。这样就不可能找到任何好的阈值。

所以我猜你使用检测灰手的“临时解决方案”是正确的。 如果您真的想检测磁带,您需要一个硬件解决方案,让您远离这种黑底黑字:

  1. 在黑色部分使用白色胶带或在白色部分使用黑色胶带。只提一下:-)
  2. Use dark/bright field illumination 而不是环境光。猜测将不起作用,因为零件和胶带的角度相似。
  3. 使用比可见光具有更大差异的不同波长。需要specific camera 和照明。最佳波长取决于很多材料,但这是这里最专业和最稳定的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多