csdn越来越坑 2023-07-07 17:00 采纳率: 0%
浏览 126
已结题

python opencv 目标识别 计算机视觉

图片1:

img


图片2:

img

需求说明:
1.不使用深度学习,机器学习之类的算法,就使用python+opencv
2.从图片1中识别出图片2中用红色框圈出的两个零部件;
3.判断两个零部件是否位置对齐(如图1中所处位置)。

  • 写回答

11条回答 默认 最新

  • Bert_2022 2023-07-07 17:52
    关注
    获得3.15元问题酬金

    为了实现从图片1中识别出图片2中用红色框圈出的两个零部件,并判断它们是否位置对齐,可以使用以下代码作为参考:

    import cv2
    import numpy as np
    
    def detect_and_match_parts(image1, image2, template1, template2):
        # 读取图像和模板
        img1 = cv2.imread(image1)
        img2 = cv2.imread(image2)
        temp1 = cv2.imread(template1, 0)
        temp2 = cv2.imread(template2, 0)
    
        # 使用模板匹配方法进行目标识别
        res1 = cv2.matchTemplate(img1, temp1, cv2.TM_CCOEFF_NORMED)
        res2 = cv2.matchTemplate(img2, temp2, cv2.TM_CCOEFF_NORMED)
    
        # 设置匹配结果的阈值
        threshold = 0.8
    
        # 获取匹配结果中符合阈值的位置
        loc1 = np.where(res1 >= threshold)
        loc2 = np.where(res2 >= threshold)
    
        # 检查两个零部件是否位置对齐
        aligned = False
        for pt1 in zip(*loc1[::-1]):
            for pt2 in zip(*loc2[::-1]):
                # 计算两个零部件的位置差
                dx = pt2[0] - pt1[0]
                dy = pt2[1] - pt1[1]
                
                # 如果位置差小于一定阈值,则判定为位置对齐
                if abs(dx) < 10 and abs(dy) < 10:
                    aligned = True
                    # 在图像上绘制矩形框标记零部件
                    cv2.rectangle(img1, pt1, (pt1[0] + temp1.shape[1], pt1[1] + temp1.shape[0]), (0, 0, 255), 2)
                    cv2.rectangle(img2, pt2, (pt2[0] + temp2.shape[1], pt2[1] + temp2.shape[0]), (0, 0, 255), 2)
                    break
        
        # 显示结果图像
        cv2.imshow("Image 1", img1)
        cv2.imshow("Image 2", img2)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    
        return aligned
    
    # 调用函数进行目标识别和位置对齐判断
    aligned = detect_and_match_parts("image1.jpg", "image2.jpg", "template1.jpg", "template2.jpg")
    
    if aligned:
        print("两个零部件位置对齐")
    else:
        print("两个零部件未位置对齐")
    
    
    

    请确保将image1.jpg、image2.jpg、template1.jpg和template2.jpg替换为实际的文件路径,这些文件包括了图片1、图片2以及红色框圈出的两个零部件的模板图像。

    该代码会在图片1和图片2中进行模板匹配,找到与模板1和模板2匹配的位置。然后,通过计算两个零部件的位置差,判断它们是否位置对齐。如果位置差较小,则在图片1和图片2上绘制矩形框标记零部件。

    最后,通过调用cv2.imshow显示结果图像,并根据位置对齐的结果输出相应的信息。

    评论

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 修改了问题 7月12日
  • 修改了问题 7月12日
  • 修改了问题 7月7日
  • 展开全部

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)