栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2022年7月27日,第二章

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022年7月27日,第二章

1.1通道的分离与合并

        通道的分离与合并使用的函数是:分离:cv.split(img) #img 是图像

                                                              合并:cv.merge([b,g,r]) #b,g,r 所分离的的通道,当按照不                                                                           同顺序进行合并时,所产生的图像也会不相同。

 下面是cv.imread()函数使用方法

import cv2 as cv

img = cv.imread('1.jpg', cv2.IMREAD_UNCHANGED)            #包含alpha通道
print(img.shape)

img = cv.imread('1.jpg', cv2.IMREAD_COLOR)                     #彩色图像
print(img.shape)

img = cv.imread('1.jpg', cv2.COLOR_BGR2GRAY)                   #颜色转换空间
print(img.shape)

img = cv.imread('1.jpg', cv2.COLOR_RGB2GRAY)
print(img.shape)

img = cv.imread('1.jpg', 1)                                                         #彩色图像
print(img.shape)

img = cv.imread('1.jpg', cv2.IMREAD_GRAYSCALE)                         #灰度图像
print(img.shape)

img = cv.imread('1.jpg', 0)                                                                 #灰度图像
print(img.shape)
 

                                                                

1.2转化为灰度图

方法一: 

 

gray_1 = 1/3*b + 1/3*g + 1/3*r  
show(gray_1)

b,g,r,是上面三通道的的分离。

# rgb转灰度图
img_gray2 = 0.114*b + 0.587*g + 0.299*r
# img_gray2 = (0.299*r + 0.587*g + 0.114*b).astype(np.uint8)
show(img_gray2)

方法二:

利用函数cv.cvtColor(图像,cv.COLOR_BGR2GRAY)

1.3图像的二值化

二值化处理将使用到OpenCV中提供的阈值(threshold)函数:

cv2.threshold(灰度图,阈值,设定值,方法)

import cv2
#相对路径下读取图片
doge = cv2.imread('doge.jpg')
#灰度化处理
grayImage = cv2.cvtColor(doge,cv2.COLOR_BGR2GRAY)
#cv2.imshow('GRAY',grayImage)

#二值化处理,低于阈值的像素点灰度值置为0;高于阈值的值置为参数3
ret,thresh1 = cv2.threshold(grayImage,127,255,cv2.THRESH_BINARY)
cv2.imshow('BINARY',thresh1)


#大于阈值的像素点灰度值置为0;小于阈值置为参数3
ret,thresh2 = cv2.threshold(grayImage,127,200,cv2.THRESH_BINARY_INV)
cv2.imshow('BINARY_INV',thresh2)

#小于阈值的像素点灰度值不变,大于阈值的像素点置为该阈值
ret,thresh3 = cv2.threshold(grayImage,127,255,cv2.THRESH_TRUNC)
cv2.imshow('TRUNC',thresh3)

#小于阈值的像素点灰度值不变,大于阈值的像素点置为0,其中参数3任取
ret,thresh4 = cv2.threshold(grayImage,127,255,cv2.THRESH_TOZERO)
cv2.imshow('BINARY_TOZERO',thresh4)


#大于阈值的像素点灰度值不变,小于阈值的像素点置为0,其中参数3任取
ret,thresh5 = cv2.threshold(grayImage,127,255,cv2.THRESH_TOZERO_INV)
cv2.imshow('BINARY_TOZERO_INV',thresh5)
1.4图像相加将其

obj = cv.imread("pic/hedgehog500x500.jpg",0)  #后面的0表示灰度图像,1表示彩色图像
bg = cv.imread("pic/line500x500.jpg",0)  #后面的0表示灰度图像,1表示彩色图像
mask = cv.imread("pic/mask500x500.jpg",0)  #后面的0表示灰度图像,1表示彩色图像
noise = cv.imread("pic/hedgehog_noise_500x500.jpg",0)  #后面的0表示灰度图像,1表示彩色图像
show(np.hstack([obj,bg,mask,noise]))  #将图片拼接显示

1.4.1图片直接相加 

注意:直接相加的前提必须是两者图片的大小相同

img_add = obj + bg
show(img_add)

 

img1 = cv.imread('4.jpg')
img2 = cv.imread('1.jpg')

imgadd = cv2.add(cv2.resize(img1,(200,200)),cv2.resize(img2,(200,200)))#将图片修改成寸
cv2.imshow('imgadd',imgadd)
cv2.waitKey(0) 

 1.4.2改变所占比

img_add = cv.add(obj*0.5,bg*0.5)
show(img_add)

 1.5图像融合

 # 图像融合
combine = cv2.addWeighted(cv2.resize(img1,(200,200)),0.5,cv2.resize(img2,(200,200)),0.5,0)

cv2.imshow('combine',combine)
cv2.waitKey(0)

1.6遮挡

mask = mask/255(mask是一张只有黑手和白色的照片)除以255的作用是将其转变为数组只有0和1的数组。

img_mul = obj*mask
img_nul2 = cv.multiply(obj*1.0,mask) #融合时需要将两个位数相同的数字进行遮挡
show(np.hstack([img_mul,img_nul2]))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号