python调用opencv_Python调用OpenCV像素操作

Python调用OpenCV进行操作的时候基本上感觉就是对numpy进行操作,跟numpy是挺相关的。

1、像素操作

OpenCV获取图像(x,y)处的像素值:

px=img[x,y]

当图像是三通道的时候返回的是BGR三通道的值,如果是灰度图的话就返回一个亮度值

同样的如果要对图像(x,y)处赋值的话,也通过这种方式来实现:

#三通道

img[x,y]=[255,255,255]

#单通道

img[x,y]=255

2、获取图像属性

获取图像的形式,这个跟numpy的操作基本一样,通过shape来获取:

img.shape

会返回一个图像的形态,也就是(行,列,通道),OpenCV的图像还有一个size属性,这个返回的是总的像素数量行*列*通道数。

通过图像的dtype来获取图像的像素数据类型:

img.dtype

返回的值类型如uint8等

3、图像ROI

OpenCV获取图像的ROI的时候可以使用类似numpy的方式来获取,如:

roi=img[r0:r1,c0:c1]

4、通道分离和合并

通道分离使用的是函数split:

b,g,r=cv2.split(img)

通道分离用的是merge函数:

img=cv2.merge(b,g,r)

当可以不用split的时候就不要用,改用numpy的索引操作,因为split是比较耗时的操作。

5、图像扩充边界

扩充边界的时候就用函数copyMakeBorder(),这个函数有四个参数:

src:输入图像

top,bottom,left,right:对应的边界的像素数目

borderType要添加哪种类型的边界

cv2.BORDER_CONSTANT,添加有颜色的常数值边界,也就是下一个参数value;

cv2.BORDER_REFLECT,边界颜色的镜像,fedcba|abcdefgh|hgfedcb;

cv2.BORDER_REFLECT_101或者cv2.BORDER_DEFAULT,gfedcb|abcdefgh|gfedcba;

cv2.BORDER_REPLICATE,重复最后一个像素来填充;

cv2.BORDER_WRAP,这个比较...,应该是左移右移来填充吧,cdefgh| abcdefgh|abcdefg

value:边界颜色import numpy as np

import cv2 as cv

src = cv.imread("D:/lena.bmp")

src = cv.resize(src, (256, 256))

dst = cv.copyMakeBorder(src, 50, 50, 50, 50,

cv.BORDER_CONSTANT, value=[255, 255, 255])

cv.imshow('BORDER_CONSTANT', dst)

src_gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)

dst = cv.copyMakeBorder(src, 50, 50, 50, 50, cv.BORDER_REFLECT)

cv.imshow('BORDER_REFLECT', dst)

dst = cv.copyMakeBorder(src, 50, 50, 50, 50, cv.BORDER_REFLECT_101)

cv.imshow('BORDER_REFLECT_101', dst)

dst = cv.copyMakeBorder(src, 50, 50, 50, 50, cv.BORDER_REPLICATE)

cv.imshow('BORDER_REPLICATE', dst)

dst = cv.copyMakeBorder(src, 50, 50, 50, 50, cv.BORDER_WRAP)

cv.imshow('BORDER_WRAP', dst)

cv.waitKey(0)

cv.destroyAllWindows()

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6MnpjeA==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6MnpjeA==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6MnpjeA==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6MnpjeA==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6MnpjeA==,size_16,color_FFFFFF,t_70

天还未黑,云怎敢灰;

雨还未下,风怎敢吹;

瓜还未熟,秧怎敢枯;

花还未落,树怎敢死;

你还未嫁,我怎敢老。

-- 汪国真 《怎敢》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值