大家来找茬图片比较脚本

news/2024/11/25 2:49:08/

第一份代码是比较两幅图,找出差异来。

# -*- coding: cp936 -*-  import ctypes  
import Image, ImageGrab, ImageChops#构造RECT结构体  
class RECT(ctypes.Structure):  _fields_ = [('left', ctypes.c_long),  ('top', ctypes.c_long),  ('right', ctypes.c_long),  ('bottom', ctypes.c_long)]  def __str__(self):  return str((self.left, self.top, self.right, self.bottom))  HWND = ctypes.windll.user32.FindWindowA(None, "大家来找茬")  
if HWND == 0:  print "找不到窗口"  quit()  rect =RECT()  
ctypes.windll.user32.GetWindowRect(HWND,ctypes.byref(rect))
print rect#去掉人物栏,去掉底边,去掉边框
rect0 = (rect.left+2,rect.top+190+2,rect.right-2,rect.bottom-96-2)
print rect0width = (rect0[2] - rect0[0])/2
height = rect0[3] - rect0[1]rect1 = (0,0,width-15,height)
rect2 = (width-1,0,rect0[2] - rect0[0]-16,height)im = ImageGrab.grab(rect0)
im1 = im.crop(rect1)
im2 = im.crop(rect2)imdiff = ImageChops.difference(im1,im2).save("c:/imdiff.bmp","")
imdiff.show()


左图:



右图:


比较结果:


第二份代码是通过opencv的轮廓检测功能分析差异边界

代码来自:http://www.opencv.org.cn/index.php/%E8%BD%AE%E5%BB%93%28contour%29%E6%A3%80%E6%B5%8B ,略有修改

'''
Created on 2011-8-18@author: Sunny
'''
#import cv module
import cv
import sysif __name__ == '__main__':# Declare the IplImagepImg = None;pContourImg = None;storage = cv.CreateMemStorage(0);contour = None;mode = cv.CV_RETR_EXTERNAL;    # Create Windowscv.NamedWindow("src", 1)cv.NamedWindow("contour",1)# Load Image, Convert to Gray by forcepImg = cv.LoadImage("c:/imdiff.bmp", 0) # A image in the same directory of the file.cv.ShowImage( "src", pImg );# Apply the Memory Storage for Contour Image.        pContourImg = cv.CreateImage(cv.GetSize(pImg),cv.IPL_DEPTH_8U,3);# copy source image and convert it to BGR imagecv.CvtColor(pImg, pContourImg, cv.CV_GRAY2BGR);# Find contourscontour = cv.FindContours( pImg, storage, cv.CV_RETR_EXTERNAL,cv.CV_CHAIN_APPROX_SIMPLE); # Draw the Contourscv.DrawContours(pContourImg, contour, cv.CV_RGB(255,0,0), cv.CV_RGB(0, 0, 255),2, 2, 8);# Show Imagecv.ShowImage( "contour", pContourImg );cv.WaitKey(0);# Destory Windowscv.DestroyWindow( "src" );cv.DestroyWindow( "contour" );# Python2.7-OpenCV2.2 will Release Image MemStorage Automatically#cv.ReleaseImage( pImg );#cv.ReleaseImage( pContourImg );#cv.ReleaseMemStorage(storage);sys.exit(0)

结果如图:


简单修改一下代码,将轮廓画在原始图片中,就可以明显的显示出差异了:

cv.DrawContours(pContourImg, contour, cv.CV_RGB(255,0,0), cv.CV_RGB(0, 0, 255), 2, 2, 8);#修改pContourImg


http://www.ppmy.cn/news/272110.html

相关文章

python系列:玩转大家来找茬

心血来潮,想写个大家来找茬的外挂。 先说下大致思路: 1.利用python调用win32截取QQ游戏的大家来找茬的两幅图。 2.计算两幅图的差值图像 3.对插值图像过滤,色域筛选,二值化,圈出差异轮廓 4.将差异轮廓的坐标&#…

【Python】QQ大家来找茬辅助

辅助环境准备: 1、下载并安装Python3。(https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe) 2、安装pywin32、pillow库。(以下都是用的清华大学的pip源安装) pip install -i https://pypi.tuna.tsingh…

欢迎大家来找茬 bug在哪里?

(function () { $(.monitor .tabs).on(click, a, function () { $(this).addClass(active).siblings(a).removeClass(active) // console.log($(this).index()); 点击的索引号 $(.monitor .content).eq($(this).index()).show().siblings(.content).hide() }) //克隆行 $(.marq…

大家来找茬 两幅图像相减 其它好的实现?

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() {Mat img1 imread("D:\\image\\img1.jpg");Mat img2 imread("D:\\image\\img2.jpg");//两幅图像的大小需要一致 Mat img_result1…

大家来找茬辅助工具实现

昨天看到同学在玩大家来找茬&#xff0c;一时兴起&#xff0c;打算自己写个辅助工具。其实游戏很简单&#xff0c;就是找出两幅图片中的不同之处。游戏规则了解了&#xff0c;那外挂的思路也就很明朗了只要对比两幅图片的像素&#xff0c;有不相同就存储进数组就可以了。有了思…

大家来找茬的部分代码

HWND hGame ::FindWindow(NULL, "大家来找茬"); if (hGame 0) { MessageBox("未找到窗口"); } else { ::SetWindowPos(hGame,HWND_TOP,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); HDC hDC ::GetDC(hGame); int i, j; int nClrLeft…

封校大学生无聊玩起图像大找茬——游戏脚本(一起领略Python脚本的风采吧)

&#x1f466;&#x1f466;一个帅气的boy&#xff0c;你可以叫我Love And Program &#x1f5b1; ⌨个人主页&#xff1a;Love And Program的个人主页 &#x1f496;&#x1f496;如果对你有帮助的话希望三连&#x1f4a8;&#x1f4a8;支持一下博主 图像大找茬——游戏脚本…

大家来找茬

今天挺开心的&#xff0c;看到了某同学做的作业&#xff0c;呵呵&#xff0c;难辨真假啊&#xff5e; 一个是雀巢咖啡的广告原图&#xff0c;另一个为临摹图&#xff0c;看看你能猜出哪个是原图吗&#xff1f; 图一 图二