首页 > 编程语言 >C# 对比图片a里面是否包含图片b

C# 对比图片a里面是否包含图片b

时间:2024-03-26 22:00:30浏览次数:22  
标签:匹配 C# Image CV Emgu 对比 模板 图片

    首先本人也是查询了很多的资料,各大平台的代码也查询过了,然后以及某d的商品图片api、=,相似图片api,相同图片api也对接了并没有得到一个很满意的接口,后来自己查询了相关代码以及自己的改动终于写出来了!!!

首先使用图像处理库:Emgu CV 图像处理库来进行图像匹配和识别。

图像匹配:使用模板匹配技术图片中寻找特定图片的位置。模板匹配的基本思路是将图片b作为模板,在图片a中滑动模板,找到最佳匹配位置。

需要注意的是我们需要记得导入 Emgu CV NuGet 包

Emgu CV  和 Emgu.CV.runtime

using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;

// 读取图片a和图片b
Image<Bgr, byte> sceneImage = new Image<Bgr, byte>("图片a路径");
Image<Bgr, byte> equipmentImage = new Image<Bgr, byte>("图片b路径");

// 使用模板匹配算法
Image<Gray, float> resultImage = sceneImage.MatchTemplate(equipmentImage, TemplateMatchingType.CcoeffNormed);

// 设置匹配阈值
double threshold = 0.8;
CvInvoke.Threshold(resultImage, resultImage, threshold, 1.0, ThresholdType.Binary);

// 在结果图像中找到匹配位置
Point[] maxLoc;
Point[] minLoc;
double[] minValues, maxValues;
resultImage.MinMax(out minValues, out maxValues, out minLoc, out maxLoc);

if (maxValues[0] > threshold)
{
    // 找到了匹配,maxLoc 即为图片a在图片b中的位置
    Console.WriteLine("找到了图片,位置:" + maxLoc);
}
else
{
    Console.WriteLine("未找到图片");
}

标签:匹配,C#,Image,CV,Emgu,对比,模板,图片
From: https://blog.csdn.net/lubenweinba1/article/details/137058915

相关文章

  • msexcl40.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msexcl40.dll文件(挑选合适的版本文件)把它......
  • TypeScript日期方法封装
    TypeScript日期方法封装1.获取当前日期,格式YYYY-MM-DD2.获取当前时间,格式YYYY-MM-DDHH:mm:ss3.返回一年的总天数4.返回日期是当年第多少天5.返回时间范围的所有周末6.返回该日期的周末日期7.返回时间范围的各个月份的总天数8.返回日期范围内所有周末,一级前......
  • logistic回归
    logistic回归也称为对数几率回归,是一种二分类算法,直接从一个样本的特征向量  预测出它是正样本的概率值,从而完成分类任务。表达式为该函数的定义域为,在定义域内单调递增。其一阶导数为                          ......
  • Leetcode 和为k的子数组
    Day11第一题#######解题思路:两层循环,用暴力法解决(从不同起始位置开始的子数组)classSolution{publicintsubarraySum(int[]nums,intk){//和为k的子数组的个数计数器countintcount=0;for(intj=0;j<nums.length;j++){......
  • VoxelRCNN
    PDF:VoxelR-CNN:TowardsHighPerformanceVoxel-based3DObjectDetectionCODE:https://github.com/djiajunustc/Voxel-R-CNN一、大体内容现有基于Point-based的目标检测方法可以保留精确点的位置,具有更好的性能,但是由于无序的存储方式,计算量很大。而Voxel-based方法更容......
  • Scrapy详解
    Scrapy分布式爬虫1、yield关键词主要用途:异步处理:Scrapy是基于Twisted框架构建的,Twisted是一个时间驱动的网络框架,它允许Scrapy进行非阻塞操作。使用yield可以暂停当前的爬虫处理,等待某些异步操作完成后再继续执行。延迟处理:当你需要处理大量数据或者需要等待某些耗时的I/O......
  • BitLocker和EFS(Encrypting File System)是Windows操作系统中用于数据加密的两种不同的
    BitLocker和EFS(EncryptingFileSystem)是Windows操作系统中用于数据加密的两种不同的功能。BitLocker:BitLocker是一种全磁盘加密技术,它可以加密整个硬盘驱动器上的数据,包括操作系统、应用程序和用户数据等。BitLocker可以保护计算机在启动时的数据安全,并且可以通过预启动认......
  • react ts 使用七牛 传输图片
    import*asqiniufrom"qiniu-js";exportdefaultfunctiondemo(){functionupdateImg(e){constfile=e.target.files[0];consttoken='后端返回的Token'constkey='Img需要传的路径和图片名称'//例如icons/clo......
  • kindle电子书_越狱后koreader中自带OCR功能的设置
    KOReader一直以PDF阅读的优秀体验而闻名。然而,在尚未配置的情况下阅读图片类PDF在KOReader中长按屏幕无法像原生系统阅读正常文档一样划线取词,并且此时KOReader会弹出一个弹窗:没有OCR识别结果,或没有语言数据。KOReader有一个内置的OCR引擎用于识别扫描的PDF和DjVu文档中的文字......
  • P2854 [USACO06DEC] Cow Roller Coaster S
    原题链接题解1.当没有花费限制的时候,我们可以将其抽象为简单的背包问题2.如果有了花费限制,那么我们就再加一维条件3.如果一个线段能用,那么它前面一定是铺满的,那我们令线段按起点排序,通过某种运算,保证放这个线段时,前面的线段组成是最优的比如在\(i\)点结尾位置花费\(j\)所......