浅谈Opencv(中)

Opencv(中)

深度研究图片的读取

cv2.imread(path,0)

0:读取灰度图片

1:读取彩色图片

-1:读取图片,加载Alpha通道 指一张图片的透明度和不透明度

import cv2
path = r'.\2.jpg'
img_color = cv2.imread(path,-1)  #默认以1形式读取
print(img_color.shape)
cv2.imshow('image',img_color)
cv2.waitKey(0)
以灰度方式打开彩色图像原理

彩色图像:三维 B G R ->(373*490)

灰度图像:二维: ->(373*490)

三维 -> 二维 Y = 0.299R + 0.587G + 0.114B (官方给出)

cv.imshow() ->不仅仅是array() 必须是uint8这种类型

import cv2
import numpy as np
path = r'.\color.jpg'
img_color = cv2.imread(path,0)  #默认以1形式读取
print(img_color.shape)
cv2.imshow('new_img',img_color)
cv2.waitKey(0)

img = cv2.imread(path,1)
b,g,r = cv2.split(img)
new_img = 0.299*r + 0.587*g + 0.114*b
#必须为8位深度,uint8
new_img = new_img.astype('uint8')
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
以1(彩色图像)的方式打开灰度图像

Opencv将灰度图像转化为彩色图像

官方的填充方式:以初始的灰度二维矩阵进行RGB通道的填充

import cv2
import numpy as np
path = r'.\gray.jpg'
img_color = cv2.imread(path,1)  #默认以1形式读取
print(img_color.shape)
cv2.imshow('new_img',img_color)
cv2.waitKey(0)

img_gray = cv2.imread(path,0)
new_img = cv2.merge([img_gray,img_gray,img_gray])
print(new_img.dtype)  #检查dtype
print(new_img.shape)
cv2.imshow('new_img',img_color)
cv2.waitKey(0)
获取图像的基本属性
import cv2
import numpy as np
path = r'.\color.jpg'
img_color = cv2.imread(path,1)  #默认以1形式读取
#选取某些像素点
print(img_color[100,100])
print(img_color[100,100,1])
#获取图像的形状
print(img_color.shape)
#获取图像的大小  [行*列]
print(img_color.size)
#获取图像数据的类型
print(type(img))
#获取像素点的数据类型
print(img.dtype)
图像的加法

矩阵加法

像素点:【0,255】 超过255怎么办【取余】 150+150=300 300%255=45

opencv提供了add()函数

像素点:【0,255】 超过255怎么办? 按255计,纯白

import cv2
path = r'.\2.jpg'
img = cv2.imread(path,1)  #默认以1形式读取
img1 = img.copy()
result1 = img+img1
result2 = cv2.add(img,img1)

cv2.imshow("img",result2)
cv2.waitKey(0)
图片融合

addWeight(src1,alpha,src2,beta,gamma)

import cv2
path = r'.\2.jpg'
img1 = cv2.imread(path,1) 
path = r'.\1.jpg'
img2 = cv2.imread(path,1)
#图片融合
# addWeight(src1,alpha,src2,beta,gamma)
# scr1\src2:第一张和第二张图片
#alpha\beta:第一张图片的权重、第二张图片的权重
# 0.1*img1 + 0.98*img2 + gamma
result = cv2.addWeighted(img1,0.6,img2,0.3,0)
cv2.imshow("img",result)
cv2.waitKey(0)
图像的类型转换

cvtColor(img,way)

import cv2
path = r'.\color.jpg'
img = cv2.imread(path,1) 
cv2.imshow('img',img)
cv2.waitKey(0)
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
cv2.imshow('img',img_rgb)
cv2.waitKey(0)
图像的缩放

cv2.resize(src,dsize,fx,fy)

src:源图片

dsize:缩放到的大小

fx:x方向上的比例 fy:y方向上的比例

import cv2
path = r'.\pic.jpg'
img = cv2.imread(path,1) 
img = cv2.resize(img,(500,500))
#img  = cv2.resize(img,None,fx=0.5,fy=1.5)
cv2.imshow('img',img)
cv2.waitKey(0)
图像的翻转

矩阵的翻转

1.沿着x轴进行翻转 (0)

2.沿着y轴进行翻转 (大于等于1)

3.同时沿着x,y轴进行翻转 (小于等于-1)

cv2.flip(src,flipCode)

src:源图像

flipCode:翻转形式

import cv2
path = r'.\pic.jpg'
img = cv2.imread(path,1) 
new_img = cv2.flip(img,-1)  
cv2.imshow('img',new_img)
cv2.waitKey(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值