opencv(1)--基础操作

加载图片

import cv2
import matplotlib.pyplot as plt

image=cv2.imread('~.jpg')
#(h,w,c)=image.shape
width=image.shape[1]
height=image.shape[0]
channels=image.shape[2]
#由于默认cv2打开图片是BGR排列
image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.imshow(image)

保存图片

cv.imwrite("save_name",image)

切片

image=cv2.imread('~.jpg')=cv2.imread('')
image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
(h,w,c)=image.shape
tl=image[0:h//2,0:w//2]		#左上角

平移

def imread(image_path):
    image=cv2.imread(image_path)
    image=cv2.cvtColor(image,cv2.COLOR_RGB2BGR)
    return image
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()

image=imread('image.jpg')
M=np.float32([[1,0,250],[0,1,500]])	#水平向右平移250个像素,竖直向下平移500像素
shifted=cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
show(image)
show(shifted)

翻转

image=imread('image.jpg')
flip=cv2.flip(image,0)		#0:垂直翻转,1:水平翻转,-1:水平垂直翻转
show(flip)

旋转

(h,w)=image.shape[:2]
M=cv2.getRotationMatrix2D((w/2,h/2),45,1.0)	#以(w/2,h/2)为中心点,逆时针旋转45°,缩放为1.0
rotation=cv2.warpAffine(image,M,(w,h))
show(rotation)	

resize大小变换

width=80
height=image.shape[0]*width//image.shape[1]		#保证宽高比例不变
resize=cv2.resize(image,(width,height),interpolation=cv2.INTER_NEAREST)#interpolation算法:cv2.INTER_NEAREST(最邻近),cv2.INTER_LINEAR(双线性),cv2.INTER_AREA(基于像素区域),cv2.INTER_CUBIC(立方插值),cv2.INTER_LANCZOS4(兰索斯插值)
show(resize)

画图

# 直线
color=np.random.randint(0,255,size=(3,)).tolist()	#注意颜色需要一个列表或元组
cv2.line(image,(0,0),(300,300),color,5)			#起点(0,0)终点(300,300),线宽:5
# 矩形
cv2.rectangle(image,(10,10),(100,100),color,3)	#左上角(10,10),右下角(100,100),线宽:3
# 圆形
cv2.circle(image,(150,150),100,color,-1)	#原点(150,150),半径:100,填充:-1

图像算术

image=imread('image.jpg')
M=np.ones(image.shape,dtype='uint8')*100
image=cv2.add(image,M)
image=cv2.subtract(image,M)

按位计算

black=np.zeros([300,300,3],dtype='uint8')
rectangle=cv2.rectangle(black,(50,50),(250,250),(255,255,255),-1)
show(rectangle)
circle=cv2.circle(black,(150,150),120,(255,255,255),-1)
show(circle)

image=cv2.bitwise_xor(rectangle,circle)	#异或,白黑为白,黑黑和白白为黑
image=cv2.bitwise_and(rectangle,circle)	#有黑为黑,可利用该操作进行遮挡
image=cv2.bitwise_or(rectangle,circle)	#有白为白
image=cv2.bitwise_not(circle)		#颜色去反

切分合并通道

(R,G,B)=cv2.split(image) #该图片已进行转换为RGB
merge=cv2.merge([R,G,B])
```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值