1
kslr 2015-05-29 13:55:20 +08:00 1
还记得字模识别的验证码的么?行不行
|
2
yahoo21cn 2015-05-29 13:57:02 +08:00 1
转成bmp,像素求差集行吗
|
3
chengzhoukun 2015-05-29 13:58:54 +08:00 via Android 1
图片说到底是矩阵,转化成矩阵然后对比不同矩阵元素是不是好点
|
4
lzachilles 2015-05-29 14:02:48 +08:00 1
为什么OPENCV不行?imread进来就是Mat矩阵,每个元素就是一个像素。直接两个Mat相减就OK了
|
5
Septembers 2015-05-29 14:07:57 +08:00 1
see /t/185474
|
6
theFool 2015-05-29 14:13:10 +08:00
为什么我在网页(chrome)上看的感觉下面的图比较亮,下到本地看是一样的?
|
7
doomgiant OP 多谢各位指点,我从矩阵这块在研究看看。再次感谢
|
10
Sylv 2015-05-29 15:07:30 +08:00 1
PIL 怎么会不可以呢,我试了下分分钟搞定:
from PIL import Image im1, im2 = Image.open("1.jpg"), Image.open("2.jpg") width, height = im1.size diff = [(x, y) for x in xrange(width) for y in xrange(height) if im1.getpixel((x, y)) != im2.getpixel((x, y))] print len(diff) -> 532 |
11
Sylv 2015-05-29 15:34:30 +08:00 1
|
12
doomgiant OP @Sylv 非常感谢,新手上路 :)
尝试用opencv2 ### import numpy as np import cv2 global n n = 0 img1 = cv2.imread('testimg.jpg', 0) img2 = cv2.imread('testimg_diff.jpg', 0) height, width = img1.shape for line in range(height): for pixel in range(width): if img1[line][pixel] != img2[line][pixel]: n = n + 1 print n ### -> 299 奇怪得出的值和你的不太一样,继续研究研究 |
13
doomgiant OP 重新排版
### import numpy as np import cv2 global n n = 0 img1 = cv2.imread('testimg.jpg', 0) img2 = cv2.imread('testimg_diff.jpg', 0) height, width = img1.shape for line in range(height): for pixel in range(width): if img1[line][pixel] != img2[line][pixel]: n = n + 1 print n ### |
14
doomgiant OP |
15
timi 2015-05-29 16:23:56 +08:00
读入到矩阵,然后矩阵相减。
|
17
dobest 2015-05-30 08:23:21 +08:00
直接遍历最简单,上面已经有人说了。另外,可以用opencv的absdiff函数,直接得到差值图像,这样可以看到两幅图像的差异。计算差异像素个数,可以将差值图像转成灰度后,用countNonZero计算非零像素个数。
|