相信大家都玩过找不同的小游戏,对于相对复杂的图片有时候找花了眼也找不出其中的不同,正好现在在学习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——图片找不同相关推荐

  1. python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码

    opencv图片写入中文(汉字)有两方法: 方法一: python+opencv+freetype https://blog.csdn.net/wyx100/article/details/75579 ...

  2. Java+OpenCV图片对比

    近期老板让研究一下航拍.遥感影像对比功能,个人认为可行性并不高,没有知识储备,而且真要做好的话得当作产品去砸钱(老板:砸钱是不可能的,这辈子都不可能砸钱). 经过查询相关资料,OpenCV对图像的处理 ...

  3. 国际色卡c色号查询_怎幺提取图片中的潘通色卡?图片找色卡

    最近发现一款非常好用的软件,可以提取图片中的潘通色卡号,假如你想找到图片中的pantone色号,或者不知道怎么识别图片中的潘通色号,可以参考这个 怎幺提取图片中的潘通色卡?图片找色卡,色卡辨识图片​w ...

  4. opencv图片线性混合可调

    opencv图片线性混合叠加.addWeighted()函数 直接上效果图 通过滚动条选择不同的透明值,使得两张图片进行不同程度的线性混合. 主要的代码是这句:addWeighted()函数 //根据 ...

  5. 2020-12-03 Python OpenCV: 图片的裁剪

    Python OpenCV: 图片的裁剪 图片裁剪使用img[y0:y1, x0:x1],其中参数分别代表y轴和x轴的起始坐标,具体使用方法如下: import cv2img = cv2.imread ...

  6. py2exe打包OpenCV,找不到libiomp5md.dll

    问题:py2exe打包OpenCV,找不到libiomp5md.dll 解决方法:把 libiomp5md.dll 从numpy/core/ 里面复制到 python27/DLLS/文件夹!!!

  7. opencv︱图片与视频的读入、显示、写出、放缩与基本绘图函数介绍

    本文来自于段力辉 译<OpenCV-Python 中文教程> 文章目录 一.图片 + 读入.显示.写出 1.cv2.imread() 2.cv2.imshow() 3.cv2.imwrit ...

  8. Pyhton opencv 图片裁剪

    Pyhton opencv 图片裁剪 opencv中可以通过 imread,imwrite进行图片读取和保存,imread读取图片后可以通过长度高度进行图片的裁剪 从上面图片可以得到,对角坐标是(x1 ...

  9. Python OpenCV 图片滑块验证码 滑块图片验证码 快速自动识别方案 代码简单 模板匹配识别 识别成功率达90%+

    前言 通过上一篇的文章大家已经对图片滑块验证码已经有了初步的了解,图片滑块验证码的核心关键在于图片识别接下来接入讲解.因为初版滑块图片识别虽然能识别验证码,通过一些策略调整也相对提高了一些图片识别率, ...

最新文章

  1. 除了海思麒麟 华为在ARM芯片上还有哪些成就?
  2. npm 发布包填坑指南
  3. 23个MySQL常用查询语句
  4. svn 1.8.11 命令行提交新添加文件错误
  5. 嘲笑一下SUN科技日开发者大会 O(∩_∩)O~
  6. 【SD】自定义销售订单审批状态
  7. ws2812b灯带容易坏_吊灯吸顶灯筒灯壁灯射灯灯带LED线条灯……都是个啥?
  8. Nginx 之一:编译安装nginx 1.8.1 及配置
  9. [转载] 将一个整数型字符串转换为一个整数
  10. 处理工行b2c上海机构问题反思
  11. wuzhicms内的全局函数--load_class()
  12. windows找不到文件gpedit.msc_极简技术|电脑文件全搜索,没有找不到的东西
  13. 前端后台学习笔记汇杂
  14. JZOJ5143:无心行挽
  15. 2016年物联网技术将从概念走向落地
  16. 黑色背景的DW代码配色方案 Colors.xml
  17. java线程栅栏_Java 多线程之栅栏-CyclicBarrier
  18. 卷积自编码器(Convolutional Autoencoder)的一个实验
  19. 大数据中为什么使用Scala?
  20. spring(春天)

热门文章

  1. excel表格怎么筛选出空白的单元格
  2. 条件随机场介绍(7)—— An Introduction to Conditional Random Fields
  3. (渐进)复杂度分析(上)
  4. 神经网络深度(Deepth)的影响
  5. 【知识图谱】通俗易懂的知识图谱技术
  6. gdb调试器之测不准原则
  7. 计算机应用基础网络统考t4,华南理工大学2019秋-计算机应用基础_随堂练习
  8. R studio界面介绍及par参数详解
  9. linux进程命令面试,面试常问的 25+ 个 Linux 命令
  10. 修改登录ftp服务器时用的密码,ftp服务器登录密码修改