基于模块差的统计情况进行实验

85次阅读
没有评论

共计 1526 个字符,预计需要花费 4 分钟才能阅读完成。

提醒:本文最后更新于 2024-08-30 16:01,文中所关联的信息可能已发生改变,请知悉!

素材

基于模块差的统计情况进行实验

max 统计

基于模块差的统计情况进行实验

min 统计

基于模块差的统计情况进行实验

max 图

大于 60 为白色

基于模块差的统计情况进行实验

min 图

小于 20 为白色

基于模块差的统计情况进行实验

代码示例

# python3.6
# utf-8
# LF
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
def get_1D_2_2D(x):
d = {0:[-1, -1], 1:[-1, 0], 2:[-1, 1], 3:[0, 1], 4:[1, 1], 5:[1, 0], 6:[1, -1], 7:[0, -1]}
return d[x]
def get_dif(img):
raw, col = img.shape
dif = np.zeros((raw - 1, col - 1, 8))
for i in range(raw - 1):
for j in range(col - 1):
for m in range(8):
d = get_1D_2_2D(m)
if(i + d[0] >= 0 and i + d[0] + 1 <= raw - 1 and j + d[1] >= 0 and j + d[1] + 1 <= col -1):
dif[i][j][m] = abs(int(img[i][j]) - int(img[i + d[0]][j + d[1]])) + \
abs(int(img[i][j + 1]) - int(img[i + d[0]][j + d[1] + 1])) + \
abs(int(img[i + 1][j + 1]) - int(img[i + d[0] + 1][j + d[1] + 1])) + \
abs(int(img[i + 1][j]) - int(img[i + d[0] + 1][j + d[1]]))
return dif
def drew_graph(array, flag):
cnt = np.zeros(100)
raw, col, _ = array.shape
for i in range(raw):
for j in range(col):
d = sorted(array[i][j])
# print(d)
if int(d[flag]) < 100:
cnt[int(d[flag])] += 1
plt.plot(cnt, color='red')
# plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title('max', fontsize=24, color='black')
plt.savefig('fenbu.png')
plt.show()
def get_show(ary):
raw, col, _ = ary.shape
imin = np.zeros((raw, col))
for i in range(raw):
for j in range(col):
d = sorted(ary[i][j])
if d[0] <= 20:
imin[i][j] = 255
cv.imwrite('min.png', imin)
imax = np.zeros((raw, col))
for i in range(raw):
for j in range(col):
d = sorted(ary[i][j])
if d[7] > 60:
imax[i][j] = 255
cv.imwrite('max.png', imax)
def main(imgdir):
img = cv.imread(imgdir, 0)
differ = get_dif(img)
# drew_graph(differ, 7)
get_show(differ)
if __name__ == '__main__':
img_dir = '03.png'
main(img_dir)
正文完
 0
icvuln
版权声明:本站原创文章,由 icvuln 于2022-11-06发表,共计1526字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)