900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > opencv 修改图像数值_opencv 修改图像数值_Python中使用OpenCV读取像素

opencv 修改图像数值_opencv 修改图像数值_Python中使用OpenCV读取像素

时间:2019-09-20 22:07:20

相关推荐

opencv 修改图像数值_opencv 修改图像数值_Python中使用OpenCV读取像素

如何在Python中遍历像素呢?请看代码:

import numpy as np

import cv2

import matplotlib.pyplot as plt

src = cv2.imread("src.png")

gray = cv2.cvtColor(src, cv2.COLOR_RGB2GRAY)

rows, cols = gray.shape[:2]

row = gray[200]

plt.plot(row)

# plt.show()

plt.savefig("gray.png", dpi=300)

原始图像:

第200行像素:

接着我们计算下200行像素的一阶差分:

看到这里,你是不是觉得有点奇怪,这个差分到底是什么鬼,简单的a[n]-a[n-1]计算出来这么复杂的东西?手动调试下看看:

请注意观察原始像素数值。

看到问题了吗?当计算223-224的时候,temp的数值为255!

这个结果的原因我想了好久,就是opencv灰度图的像素数据类型是uchar,而char的长度被定义为8个字节,所以溢出了。。。

最后修改如下:

import numpy as np

import cv2

import matplotlib.pyplot as plt

src = cv2.imread("src.png")

gray = cv2.cvtColor(src, cv2.COLOR_RGB2GRAY)

rows, cols = gray.shape[:2]

row = gray[200]

# first = np.diff(row)

first = []

for r in range(len(row) - 1):

temp = int(row[r+1]) - int(row[r])

first.append(temp)

plt.plot(first)

# plt.show()

plt.savefig("first.png", dpi=300)

调试结果:

终于看到正确的差分结果了,差分计算图如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。