使用图像直方图方式搜索相似图片_基于直方图的以图搜图-程序员宅基地

技术标签: 计算机视觉  图像识别  openCV  opencv  

使用图像直方图方式搜索相似图片

该文章仅用于学习~

  通常我们搜索图片,都是根据图片的标签搜索的。基于内容的搜索,就是不知道标签,而是直接输入一幅图像,然后搜索到与这幅图像相同或相似的图像(以图搜图)。以图搜图的方法之一就是比较图像直方图。
下面我将使用图像直方图形式匹配相似图片:
在不同电脑上匹配时要修改3个地方
eg:想读到的原图务必在该程序文件夹下存有图片!否则会报错

			(1)path的路径
			(2)line 87 的绝对路径
			(3)file[]等图像字符串的大小,这里我D盘只有3个图像判断,故直接写了 <3>       在line 80及line28
			(4)line 119 的匹配值可以修改,我设置了-0.98到0.02的区间图像都为符合的图像,可以根据自己的图像所需进行修改
#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector> 
#include<fstream>
#include <io.h>
#include<string>

using namespace cv;
using namespace std;

const char path[100] = "D:\\image\\*.jpg"; //不同的路径可以自己改,支持通配符查找,注意同时修改 line85 的图像路径


/*              在不同电脑上匹配时要修改3个地方
					eg:想读到的原图务必在该程序文件夹下存有图片!否则会报错

				(1)path的路径
				(2)line 87 的绝对路径
				(3)file[]等图像字符串的大小,这里我D盘只有3个图像判断,故直接写了 <3>       在line 80及line28
				(4)line 119 的匹配值可以修改,我设置了-0.98到0.02的区间图像都为符合的图像,可以根据自己的图像所需进行修改

*/
int main()
{
   
    

	/*********************将文件夹中的文件保存为file[]字符串**********************/
	string file[3];//*
	struct _finddata_t fileinfo;
	intptr_t handle;
	handle = _findfirst(path, &fileinfo);
	int i = 1;//第1位
	if (!handle)
	{
   
    
		cout << "输入的路径有错误" << endl;
		return -1;
	}
	else
	{
   
    
		file[0] = fileinfo.name;//试着读出第一个图象存到第0位,如果可以读出就继续,不然就退出
		//cout << fileinfo.name << endl;
		while (_findnext(handle,
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41662881/article/details/105740954

智能推荐

利用JAVA代码将本地文件传入HDFS中_java上传文件到hdfs-程序员宅基地

文章浏览阅读1.9k次。先创建hdfs存储路径作为输出流,然后把本地文件存储路径作为输入流,利用copyBytes方法将本地文件上传到hdfs输出流的路径就大功告成了!在 C:\Windows\System32\drivers\etc 中修改hosts文件,将虚拟机的hostname和ip写在文件底部。2.在系统变量里配置HADOOP_HOME和JAVA_HOME,并配置PATH。首先要下载hadoop_lib包,然后在IDEA里面导入这个包。要一次性上传完这些文件,需要循环读取文件名字,代码如下。hdfs中存在文件,上传成功!_java上传文件到hdfs

《运算放大器元器件》的特性分析_级联运放-程序员宅基地

文章浏览阅读5.6k次,点赞2次,收藏34次。一、运算放大器是具有很高放大倍数的多级直接耦合放大电路单元,在实际电路中,通常结合反馈网络共同组成某种功能的模块。随着半导体技术的发展,目前大部分的运放是以单芯片(集成IC)的形式存在,其输出信号可以是输入信号的比例、加、减、微分或积分等数学运算的结果。集成运放包括放大区(线性区)和饱和区(非线性区)两部分,详见其电压传输特性曲线。(1)、OP放大器的工作原理:对两个输入端间的电位差进行放大。..._级联运放

基于ssm+vue.js的图书管理系统附带文章和源代码设计说明文档ppt-程序员宅基地

文章浏览阅读889次,点赞16次,收藏28次。博主介绍:CSDN深耕的技术专家、博客专家、有着常年的工作经验、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战精彩专栏 推荐订阅2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐JAVA精品实战案例《500套》微信小程序项目精品案例《500套》文末获取源码+数据库。

cmake开发环境 linux qt_使用 QtCreator 和 CMake 搭建 Linux 下的 STM32 开发环境-程序员宅基地

文章浏览阅读586次。系统环境:主机系统:Arch Linux 64bit交叉编译工具链:arm-none-eabi-gcc-9.3.0调试器:arm-none-eabi-gdb-9.1QtCreator 版本:4.11.2CMake 版本:3.17.1OpenOCD 版本:0.10.0硬件环境:STM32 型号:STM32F103RCT仿真调试器:ST-Link v2搭建步骤:1. 激活插件首先需要激活一个名为 Ba..._linux cmake可以编qt

C#winform程序中控件等比例缩放(主要针对主程序加载子程序)_winform 等比缩放-程序员宅基地

文章浏览阅读2k次。这里的等比例适用的是在主窗体中加载了多个子窗体,或者一个主程序引用了另外一个子程序dll这样等比例缩放,也并不是实际意义上的等比例,而是相当于重新加载子窗体,但子窗体里面的数据不能变化。 主窗体和子窗体加载这种就不介绍,直接介绍主程序加载子程序的dll这种,主窗体与子窗体与其类似。 先建立一个主程序,主程序就当做一个壳,里面简单放几个容器即可。再建立一个子程序,子程序可以随便加点窗口进去,主要是为了让主程序调用加载进主程序。为了实现所谓的等比例缩放,子窗体..._winform 等比缩放

Android 计时器Chronometer 使用及源码分析-程序员宅基地

文章浏览阅读852次,点赞27次,收藏22次。今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

随便推点

Leetcode 数组(简单题)[1-1000题]_给定一个浮点数数组nums(逗号分隔)和一个浮点数目标值target(与数组空格分隔),请-程序员宅基地

文章浏览阅读1.9k次。1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一..._给定一个浮点数数组nums(逗号分隔)和一个浮点数目标值target(与数组空格分隔),请

python性能优化方案_python 性能优化方法小结-程序员宅基地

文章浏览阅读152次。提高性能有如下方法1、Cython,用于合并python和c语言静态编译泛型2、IPython.parallel,用于在本地或者集群上并行执行代码3、numexpr,用于快速数值运算4、multiprocessing,python内建的并行处理模块5、Numba,用于为cpu动态编译python代码6、NumbaPro,用于为多核cpu和gpu动态编译python代码为了验证相同算法在上面不同实现..._np.array 测试gpu性能

GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用

GIS(地理信息系统)和GPT(生成式预训练模型)的结合正日益成为推动科研、城市规划、环境监测等领域发展的关键技术。GIS以其强大的空间数据处理、先进的空间分析工具、灵活的地图制作与可视化能力、广泛的扩展性和定制性,成为地理信息科学的核心工具。它在多学科领域的应用,如城市规划、环境科学、交通管理等,发挥着至关重要的作用。而GPT则以其在自然语言处理、文本生成、智能对话和知识库构建方面的优势,为GIS的智能化和自动化带来了新的可能性,提升了文本创作的效率和智能系统的交互体验。

在Debian 10上安装MySQL_debian mysql安装-程序员宅基地

文章浏览阅读324次。MySQL是一个著名的开源数据库管理系统,用于存储和检索各种流行应用程序的数据。MySQL 是*LAMP*堆栈中的**M**,LAMP 堆栈是一组常用的开源软件,还包括 Linux、Apache Web 服务器和 PHP 编程语言。在本教程中,您将通过添加此存储库来安装最新版本的 MySQL,安装 MySQL 软件本身,确保安装安全,并测试 MySQL 是否正在运行并响应命令。_debian mysql安装

edge 此项内容已下载并添加到 Chrome 中。_一个小扩展,解决Chrome长期以来的大痛点...-程序员宅基地

文章浏览阅读1.6k次。PC 端最好用的浏览器非 Chrome 莫属,这是一件没什么悬念的事情。前两天发了一个小调查,也只能问 除了 Chrome 之外,你的备胎浏览器是什么?所以你如果问我 PC 端的浏览器有什么推荐?我的回答也没什么创意,那就是它,是它,就是它,我们的英雄小。。。。不好意思,走串场了。至于 Chrome 浏览器到底有多好用、多厉害,不用我多说,在我 N 次的彩虹屁下,小伙伴们应该早已下载并且用得得心应..._此项内容已下载并添加到 chrome 中。

vue js 点击按钮为当前获得焦点的输入框输入值_vue获得当前获得焦点的元素-程序员宅基地

文章浏览阅读1k次。VUE js 点击按钮为当前获得焦点的输入框输入值使用mousedown方法,可以阻止页面将焦点转移到按钮上<el-button @mousedown.native="entrySymbol($event,'+')">+</el-button>获取当前拥有焦点的输入框或文本域,并为其赋值 //输入符号 entrySymbol(e, symbol) { //取消失去焦点事件 e.preventDefault() //获_vue获得当前获得焦点的元素

推荐文章

热门文章

相关标签