1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > OpenCV对图片的读写 像素值的访问 修改

OpenCV对图片的读写 像素值的访问 修改

时间:2022-05-07 04:09:43

相关推荐

OpenCV对图片的读写 像素值的访问 修改

安装OpenCv3.0+Ubuntu16.04

import cv2import numpy as np

img = np.zeros((3,3), dtype=np.uint8)

img

array([[0, 0, 0],[0, 0, 0],[0, 0, 0]], dtype=uint8)

cv2.cvtColor将图像转换为BGR格式

img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

img

array([[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]]], dtype=uint8)

img.shape

(3, 3, 3)

import matplotlib.pyplot as plt

plt.imshow(img)plt.show()

以灰度图像夹在文件

imread()方法的可选参数:IMREAD_ANYCOLOR=4,

IMREAD_ANYDEPTH=2,IMREAD_COLOR = 3,

IMREAD_GRAYSCALE=0, IMREAD_LOAD_GDAL=8,

IMREAD_UNCHANGED = -1

grayImage = cv2.imread('data/apple.jpg', cv2.IMREAD_GRAYSCALE)

plt.imshow(grayImage)plt.show()

cv2.imwrite('data/grayapple.jpg', grayImage)

True

图像与原始字节之间的转换

如果图像的每个像素都是由一个8位的二进制数表示,可以通过显式的转换为一维的bytearray格式,

bytearray格式的图像数据也可以resize为numpy数组格式的图像.

# 将随即生成的数据转换为灰度图像和BGR图像import osimport cv2import numpy as npimport matplotlib.pyplot as plt# 随即像素点的数值# 等价np.random.randint(0,255,120000)randomBytearray = bytearray(os.urandom(120000))# 转换为numpy数组flatNumpyArray = np.array(randomBytearray)# 转换为300*400灰度图像数组grayImage = flatNumpyArray.reshape(300,400)# 转换为BGR图像格式bgrImage = cv2.cvtColor(grayImage, cv2.COLOR_GRAY2BGR)# 调整数组大小bgrImage2 = flatNumpyArray.reshape(100, 400, 3)

灰度图

plt.imshow(grayImage)plt.show()

彩色图

cv2.cvtColor()通过将单通道的值复制到其他两个通道

plt.imshow(bgrImage)plt.show()

plt.imshow(bgrImage2)plt.show()

访问某个像素的值

# grayImagegrayImage.item(100,100)

67

grayImage[100,100]

67

# bgrImage chamle BbgrImage.item(100,100,0)

67

bgrImage[100,100,0]

67

修改某个特定位置的像素值

grayImage.itemset((100,199),250)bgrImage.itemset((100,100,0),250)

修改某个通道的值

# 修改前plt.imshow(bgrImage2)plt.show()

# 修改后bgrImage2[:,:,1] = 111plt.imshow(bgrImage2)plt.show()

用一张图片的特定区域覆盖另一张图片的特定区域

img1 = cv2.imread('picture/img1.jpg',cv2.IMREAD_GRAYSCALE)img2 = cv2.imread('picture/img2.jpg',cv2.IMREAD_GRAYSCALE)

roi = img2[199:399, 199:399]

img1[199:399, 199:399] = roiplt.imshow(img1)plt.show()

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