OpenCV的简单练习

1、读取一张彩色图像并将其转换为灰度图。

import matplotlib.pyplot as plt

img = plt.imread("./flower.png")
# 灰度化
img_gray = img[:,:,0]*0.299 + img[:,:,1]*0.587 + img[:,:,2]*0.114

plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(img_gray,cmap='gray')
plt.tight_layout()
plt.show()

2、编写程序,读取一张彩色图像【flower.png】,将其转换为灰度图,然后进行二值化处理。接着,对二值化后的图像执行腐蚀和膨胀操作,并显示处理前后的图像。

import cv2

# 读取图像
img = cv2.imread("./flower.png")

# 调整图片大小为400x400像素
img = cv2.resize(img, (400,400))

# 将图像从BGR颜色空间转换为灰度图像
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 自适应阈值二值化
# 对灰度图像进行自适应二值化处理,以增强图像处理效果
img_adaptive_binary = cv2.adaptiveThreshold(img_gray,      # 参数1:输入的灰度图像
                                            255,  # 参数2: 二值化处理后的最大值
                                            cv2.ADAPTIVE_THRESH_GAUSSIAN_C,     # 参数3: 使用局部均值作为阈值计算方法
                                            cv2.THRESH_BINARY_INV,        # 参数4: 使用二值化阈值处理方式
                                            7,           # 参数5: 邻域大小,用于计算阈值的区域范围
                                            5)    # 参数6: 常数C,计算阈值时从均值中减去的值

# 创建椭圆形结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
# 腐蚀图像
img_erode = cv2.erode(img_adaptive_binary,kernel)
# 先腐蚀后膨胀图像
img_erode_dilate = cv2.dilate(img_erode,kernel)

# 显示腐蚀后的图像
cv2.imshow("img_erode",img_erode)
# 显示自适应二值化后的图像
cv2.imshow("img_adaptive_binary",img_adaptive_binary)
# 显示先腐蚀后膨胀的图像
cv2.imshow("img_erode_dilate",img_erode_dilate)
# 等待按键按下
cv2.waitKey(0)

3、编写程序,读取一张彩色图像,执行以下操作:

  1. 将图像缩放至指定大小(例如,宽度和高度都缩小为原来的一半)。
  2. 对缩放后的图像应用仿射变换,实现图像的旋转(例如,旋转45度)。
  3. 将图像从BGR颜色空间转换为HSV颜色空间,并提取出特定的颜色范围(例如,提取黄色区域)。
  4. 显示处理后的图像,并在图像上标记出识别到的颜色区域。
import cv2
import numpy as np

# 读取图片并调整大小
img = cv2.imread('./color_1.png')
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)

# 计算图像旋转的变换矩阵,围绕图像中心旋转45度,缩放因子为1
M = cv2.getRotationMatrix2D((img.shape[1]/2, img.shape[0]/2), 45, 1)

# 应用仿射变换,旋转图像
img_warp = cv2.warpAffine(img,  # 要旋转的图像
                          M,    # 变换矩阵
                          (img.shape[1], img.shape[0]), # 输出图像的大小
                          flags=cv2.INTER_LINEAR,   # 插值方式
                          borderMode=cv2.BORDER_WRAP   # 边缘填充方式,默认是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值