习题一:创建一副大小为240*320,中心100*100为红色,周围为黑色的图像
测试代码
import cv2
import numpy as np
zeroImg=np.zeros((240,320,3),np.uint8) # 创建一副3通道黑色图像
cv2.imshow('black',zeroImg) # 显示黑色图像
b,g,r=cv2.split(zeroImg) # 使用split()函数拆分颜色通道
r[70:170,110:210]=255 # 将红色通道中心100*100的像素值置为255
img=cv2.merge([b,g,r]) # 合并颜色通道
cv2.imshow('window',img) # 显示图像
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果
习题二:选择一副彩色图像,将其转换为灰度图,显示对比图
测试代码
import cv2
rem=cv2.imread('rem.png') # 读取图像
cv2.imshow('rem',rem) # 显示原图
rem1=cv2.imread('rem.png',cv2.IMREAD_GRAYSCALE) # 读取图像并将其改为灰度图
cv2.imshow('rem1',rem1) # 显示灰度图
cv2.waitKey(0) # 等待任意按键输入
cv2.destroyAllWindows() # 关闭所有窗口
运行结果
习题三:选择一副彩色图像,将其大小减小为原来的1/2,显示对比图
测试代码
import cv2
ice=cv2.imread('ice.png') # 读取图像
cv2.imshow('ice',ice) # 显示原图
ice1=cv2.imread('ice.png',cv2.IMREAD_REDUCED_COLOR_2) # 读取图像并将大小改为原来的1/2
cv2.imshow('ice1',ice1) # 显示1/2图
cv2.waitKey(0) # 等待任意按键输入
cv2.destroyAllWindows() # 关闭所有窗口
运行结果
习题四:选择一副彩色图像,将其转换为灰度图,并将其大小减小为原来的1/2,显示对比图
测试代码
import cv2
import numpy as np
path = 'rem.png' # 图片存储路径,注意不能有中文
rem=cv2.imread(path) # 读取图像
cv2.imshow('rem',rem) # 显示原图
rem1=cv2.imread(path,cv2.IMREAD_REDUCED_COLOR_2) # 读取图像并将大小改为原来的1/2
# 转化为灰度图
rem1_b,rem1_g,rem1_r=cv2.split(rem1) # 拆分颜色通道
rem1=np.uint8(rem1_b*0.114+rem1_g*0.587+rem1_r*0.229) # 利用公式实现灰度化 G=0.114∗B+0.587∗G+0.229∗R,并将类型改为np.uint8
cv2.imshow('rem1',rem1) # 显示1/2灰度图
cv2.waitKey(0) # 等待任意按键输入
cv2.destroyAllWindows() # 关闭所有窗口
运行结果
习题五:选择一副彩色图像,通过改其像素值,实现在其中显示一个大小为80*100的黑色区域
测试代码
import cv2 as cv
path = 'rem.png' # 图像路径
img = cv.imread(path) # 读取图像
print(img.shape) # 打印shape值——宽、高、颜色通道数
w, h = img.shape[:2] # 获取图像的宽、高
# 获取中心80*100黑块的起始坐标
w1 = int((w - 80) / 2) # 为什么要转化为整形?进行/操作后,会变为浮点型
h1 = int((h - 100) / 2)
img[w1:w1 + 80, h1:h1 + 100] = 0 # 将中心块转化为黑色
cv.imshow('test_5', img) # 显示图像
cv.waitKey(0) # 等待任意键输入
cv.destroyAllWindows() # 关闭所有窗口
运行结果
习题六:选择一副彩色图像,创建图像掩摸,实现取出图像中心80*120的图像
测试代码
import cv2 as cv
import numpy as np
src1 = cv.imread('ice.png', cv.IMREAD_REDUCED_COLOR_2) # 图片大小改为1/2,观感好些
cv.imshow('ice',src1) # 显示原图
# 创建掩摸
H, W ,C= src1.shape # 获取图像的高、宽、通道数
zeroImg = np.zeros((H, W, C), np.uint8) # 创建一个shape值相同的黑色图片
# 定义一个函数,实现将传入图片的中心大小区域改为白色,返回值为该图片
def createpho(img,h,w):
h1 = int((H - h) / 2)
w1 = int((W - w) / 2)
img[h1:h1 + h, w1 : w1 + w] = 255
return img
zeroImg=createpho(zeroImg,80,120) # 调用函数
cv.imshow('HB',zeroImg) # 显示掩摸
img = cv.bitwise_and(src1, zeroImg) # 按位与运算,全真为真,一假为假
cv.imshow('and',img) # 显示与图片
cv.waitKey(0) # 等待按键输入
cv.destroyAllWindows() # 关闭所有窗口
运行结果
习题七:选择一副彩色图像,分别显示其B,G,R图像通道
测试代码
import cv2 as cv
path = 'rem.png' # 图片存储路径,注意不能有中文
rem=cv.imread(path,cv.IMREAD_REDUCED_COLOR_2) # 读取图像并将大小改为原来的1/2
rem_b,rem_g,rem_r=cv.split(rem) # 拆分颜色通道
cv.imshow('rem',rem) # 显示原图
cv.imshow('remB',rem_b) # 显示B通道
cv.imshow('remG',rem_g) # 显示G通道
cv.imshow('remR',rem_r) # 显示R通道
cv.waitKey(0)
cv.destroyAllWindows()
运行结果
2023/08/03/23:54
OpenCV学习笔记,小小鸽了几天