2021-07-18

对图像的一些操作

修改像素值

修改像素值有两种方法,第一种是直接访问数组修改,第二种是使用item和itemset函数访问和修改。

img=cv.imread('C:\\Users\\Administrator\\Desktop\\123\\2.jpg',0)
#方法一
img[100,100]=0
#方法二
print(img.item(100,100))
img.itemset(100,100,0)

访问图像属性

图像属性包括行数,列数和通道数,图像数据类型,像素数等。
图像的形状可通过 img.shape 访问。它返回行,列和通道数的元组。如果图像是灰度的,则返回的元组仅包含行数和列数,因此这是检查加载的图像是灰度还是彩色的好方法。

print( img.shape )

像素总数可通过访问 img.size

print( img.size )

图像数据类型通过 img.dtype 获得

print( img.dtype )

图像的处理

图像的分割,将图像中的一部分切割出来,用到的其实是分片的特性。

import cv2 as cv
cv.namedWindow('image')
img=cv.imread('C:\\Users\\Administrator\\Desktop\\123\\2.jpg',0)
print(img.shape)
img1=img[50:100,25:75]
cv.imshow('image',img1)
cv.waitKey(10000000)
cv.destroyAllWindows()

拆分和合并图像通道,有两种方法,第一种是使用分片的特性进行拆分,第二种是使用opencv内置得到split()函数和merge()函数进行拆分。
注意:cv.split() 是一项耗时的操作(就时间而言)。因此,仅在必要时才这样做。否则请进行Numpy索引。

import cv2 as cv
cv.namedWindow('image')
img=cv.imread('C:\\Users\\Administrator\\Desktop\\123\\2.jpg',0)
#第一种
b = img [:, :, 0]
g = img [:, :, 1]
r = img [:, :, 2]
img1=cv.merge((r,g,b))
#第二种
b,g,r = cv.split(img)
img = cv.merge((r,g,b))

为图像增加边框
cv.copyMakeBorder()函数可以为图像增加边框,他的输入为需要加边框的图片,上边框宽度,下边框宽度,左边框宽度,右边框宽度,边框类型,关于某些边框类型的参数value。然后返回一个加上边框的图像。
代码例子:

import cv2 as cv
img1 = cv.imread('C:\\Users\\Administrator\\Desktop\\123\\2.jpg')
replicate = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REPLICATE)
cv.namedWindow("image")
cv.imshow("image",replicate)
cv.waitKey(100000000)

常见边框类型和对应的处理方法:

边框代码处理方法
BORDER_REPLICATE复制法 aaaaaa[abcdefgh]hhhhhhh 取图片最边界的一个像素点作为边框,边框长度是几就复制几次
BORDER_REFLECT对称法 fedcba[abcdefgh]hgfedcb 取图片最边缘的一个像素为对称轴,然后对称复制对称轴另一侧边框长度的图片作为边框。(边框类型的默认方法)
BORDER_CONSTANT常量法 iiiiii[abcdefgh]iiiiiii 以一个常量像素值填充扩充的边界值,该值由参数确定。
BORDER_REFLECT_101gfedcb[abcdefgh]gfedcba 将图片左边边框长度的像素复制,然后翻转作为图片的边框
BORDER_WRAPcdefgh[abcdefgh]cdefg 将图片右边边框长度的像素复制,然后作为图片的边框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值