opencv——图片找不同
相信大家都玩过找不同的小游戏,对于相对复杂的图片有时候找花了眼也找不出其中的不同,正好现在在学习opencv,突然想通过opencv实现图片的找不同,这个也是非常的简单。直接上图片。这是从网上找的一张图片,如果出现侵权请联系我删除。这幅图片看起来比较简单,可以很容易的找到,下面通过代码来实现。
首先这是一副完整的图像分为左右两边,在若干部位出现不同,先把图片看成是两幅基本相同的图像拼接在一起,那么出现不同的地方一定是两幅图片中相同的部分,所以只要找出相同的位置不同的颜色显示并标记出来即可。代码实现:图片分为两块进行遍历找出不同。
代码如下
#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/opencv.hpp>
using namespace cv;
#include"iostream"
using namespace std;
Mat find_diff(Mat img){int imgrow=img.rows;int imgcol=img.cols;int channel=img.channels();Mat out=Mat::zeros(imgrow,imgcol,CV_8UC3);//返回也是相同大小的图像for(int i=0;i<imgrow;i++){for(int j=0;j<imgcol/2;j++){ //imgcol/2是将图像从中间分为左右两边进行比较for(int k=0;k<channel;k++){out.at<Vec3b>(i,j)[k]=img.at<Vec3b>(i,j)[k];out.at<Vec3b>(i,j+imgcol/2)[k]=img.at<Vec3b>(i,j+imgcol/2)[k];if(out.at<Vec3b>(i,j)[k]!=out.at<Vec3b>(i,j+imgcol/2)[k]){out.at<Vec3b>(i,j)[k]=255;out.at<Vec3b>(i,j+imgcol/2)[k]=255;//255代表白色的像素值,不同地方用白色标记}}}}return out;
}
void main(){Mat img=imread("3.jpg",IMREAD_COLOR);cout << img.rows << " "<< img.cols << endl;Mat out=find_diff(img);imshow("sample",out);waitKey(0);
}
这里要考虑到读取图片的尺寸,用下面语句进行显示,这个牵扯到图片分割的imgcol/2的结果,如果不能被2整除,结果就会受到影响。
cout << img.rows << " "<< img.cols << endl;
上述代码的效果图如下所示,不同的地方被白色进行标记。
opencv——图片找不同相关推荐
- python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
opencv图片写入中文(汉字)有两方法: 方法一: python+opencv+freetype https://blog.csdn.net/wyx100/article/details/75579 ...
- Java+OpenCV图片对比
近期老板让研究一下航拍.遥感影像对比功能,个人认为可行性并不高,没有知识储备,而且真要做好的话得当作产品去砸钱(老板:砸钱是不可能的,这辈子都不可能砸钱). 经过查询相关资料,OpenCV对图像的处理 ...
- 国际色卡c色号查询_怎幺提取图片中的潘通色卡?图片找色卡
最近发现一款非常好用的软件,可以提取图片中的潘通色卡号,假如你想找到图片中的pantone色号,或者不知道怎么识别图片中的潘通色号,可以参考这个 怎幺提取图片中的潘通色卡?图片找色卡,色卡辨识图片w ...
- opencv图片线性混合可调
opencv图片线性混合叠加.addWeighted()函数 直接上效果图 通过滚动条选择不同的透明值,使得两张图片进行不同程度的线性混合. 主要的代码是这句:addWeighted()函数 //根据 ...
- 2020-12-03 Python OpenCV: 图片的裁剪
Python OpenCV: 图片的裁剪 图片裁剪使用img[y0:y1, x0:x1],其中参数分别代表y轴和x轴的起始坐标,具体使用方法如下: import cv2img = cv2.imread ...
- py2exe打包OpenCV,找不到libiomp5md.dll
问题:py2exe打包OpenCV,找不到libiomp5md.dll 解决方法:把 libiomp5md.dll 从numpy/core/ 里面复制到 python27/DLLS/文件夹!!!
- opencv︱图片与视频的读入、显示、写出、放缩与基本绘图函数介绍
本文来自于段力辉 译<OpenCV-Python 中文教程> 文章目录 一.图片 + 读入.显示.写出 1.cv2.imread() 2.cv2.imshow() 3.cv2.imwrit ...
- Pyhton opencv 图片裁剪
Pyhton opencv 图片裁剪 opencv中可以通过 imread,imwrite进行图片读取和保存,imread读取图片后可以通过长度高度进行图片的裁剪 从上面图片可以得到,对角坐标是(x1 ...
- Python OpenCV 图片滑块验证码 滑块图片验证码 快速自动识别方案 代码简单 模板匹配识别 识别成功率达90%+
前言 通过上一篇的文章大家已经对图片滑块验证码已经有了初步的了解,图片滑块验证码的核心关键在于图片识别接下来接入讲解.因为初版滑块图片识别虽然能识别验证码,通过一些策略调整也相对提高了一些图片识别率, ...
最新文章
- 除了海思麒麟 华为在ARM芯片上还有哪些成就?
- npm 发布包填坑指南
- 23个MySQL常用查询语句
- svn 1.8.11 命令行提交新添加文件错误
- 嘲笑一下SUN科技日开发者大会 O(∩_∩)O~
- 【SD】自定义销售订单审批状态
- ws2812b灯带容易坏_吊灯吸顶灯筒灯壁灯射灯灯带LED线条灯……都是个啥?
- Nginx 之一:编译安装nginx 1.8.1 及配置
- [转载] 将一个整数型字符串转换为一个整数
- 处理工行b2c上海机构问题反思
- wuzhicms内的全局函数--load_class()
- windows找不到文件gpedit.msc_极简技术|电脑文件全搜索,没有找不到的东西
- 前端后台学习笔记汇杂
- JZOJ5143:无心行挽
- 2016年物联网技术将从概念走向落地
- 黑色背景的DW代码配色方案 Colors.xml
- java线程栅栏_Java 多线程之栅栏-CyclicBarrier
- 卷积自编码器(Convolutional Autoencoder)的一个实验
- 大数据中为什么使用Scala?
- spring(春天)
热门文章
- excel表格怎么筛选出空白的单元格
- 条件随机场介绍(7)—— An Introduction to Conditional Random Fields
- (渐进)复杂度分析(上)
- 神经网络深度(Deepth)的影响
- 【知识图谱】通俗易懂的知识图谱技术
- gdb调试器之测不准原则
- 计算机应用基础网络统考t4,华南理工大学2019秋-计算机应用基础_随堂练习
- R studio界面介绍及par参数详解
- linux进程命令面试,面试常问的 25+ 个 Linux 命令
- 修改登录ftp服务器时用的密码,ftp服务器登录密码修改