网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 知识问答

怎么从已知图片里面找到目标图片?

时间:2026-02-16 16:56:10

1、把两幅图片载入到Mathematica里面,并分别命名为img和img0。

怎么从已知图片里面找到目标图片?

2、把图片都转化为图像数据,并提取图片的第一通道的数包铲据:

{a0,b0}=ImageData[#]&/@{img,img0};{a,b}=#[[All,All,1]]&/@{a0,b0};

a和b转化为图片,就是第一通道的灰度图,共俩图。

怎么从已知图片里面找到目标图片?

3、查看图片尺寸:

{u,v}=ImageDimensions[img]{p,q}=ImageDimensions[img0]

其中,u和p代表图片宽度,v和q代表图片高度。

imgu=Image[Table[a[[m,n]],{m,1,q,1},{n,1,p,1}]]

目标是从img左上角截取某个图片,并只保留第一通道的灰度图。

注意,imgu和img0大小一样。

怎么从已知图片里面找到目标图片?

4、Image[b]和imgu都是同样大小的单通道图片,那么,这两个图片可以相减:

imgu-Image[b]

两个完全相同的图片,相减之后,成图全黑;

否则,就说明两个图片不相同。

怎么从已知图片里面找到目标图片?

5、而这一点,可以通过对图片数据进行计算,加以区别:

(imgu-Image[b]//ImageData//Flatten)^2//Total

注意,上面用的算法,是取数据差值的盯昆侧平方和;也就是说,当且仅当结果等于0,才能说明两幅图片相同。

怎么从已知图片里面找到目标图片?

6、下面图片里面的算法,可以帮助我们在原图中找到img0的左上角的位置。

从运行结果可以看出来,img从左上角开始数,第16列、第18行的那个像素,与img0左上角的那个像素是对应的。

换个说法,截图的时候,是从img的那个位置上往右下角拖拽,得到的截图。

怎么从已知图片里面找到目标图片?

7、可以验证一下:

aa=Img[ss[[1,1]],ss[[1,2]]]

(aa-Image[b]//ImageData//Flatten)^2//Total

其中,Img是一个自定义函数。

通过运行结果,可以发现,图片aa和Image[b]是完全一样的。

怎么从已知图片里面找到目标图片?

8、其实,上面荡珠所有的分析,就是为了找到img0的左上角在原图(img)里面的位置。

知道了位置,我们就可以在原图中用绿色框把img0突显出来。

但是有一点要注意,矩形的绘制,是从左下角到右上角进行的,因此,要计算出左下角的像素位置:

{ss[[1,1]],v-ss[[1,2]]-q}

那么,右上角的位置,就是:

{ss[[1,1]],v-ss[[1,2]]-q}+{p,q}

怎么从已知图片里面找到目标图片?

© 2026 智德知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com