OpenCV_PY_1.9.0练习

本文介绍了使用OpenCV进行图像操作的几个实例,包括创建彩色图像的特定区域、灰度化、图像大小调整、颜色通道分离、掩模提取以及显示单个通道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

习题一:创建一副大小为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学习笔记,小小鸽了几天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值