图像处理课后作业Ⅱ——简单处理图片(腐蚀膨胀、更改RGB值)

第二次课后作业

作业任务:简单处理一张图像

处理想法

选取一个物体,对它进行两种不同的图像处理,然后拼接起来

处理思路
导入库
读取图像1
腐蚀膨胀2
BGR调色3
剪切拼接
绘制图像外框4

"1234"指输出窗口的编号

工程实现

1.导入库,读取图像(键盘)

# 引入cv2和numpy库
import cv2
import time
from cv2 import cv2
import numpy as np
start =time.clock()  # 代码开始运行的时刻

img = cv2.imread("E:\\18023\\Pictures\\Camera Roll\\keyboard.png")  # 读取图像
cv2.imshow('1', img)  # 输出处理前的图像

处理前原图
2.腐蚀膨胀处理

# 用椭圆结构进行膨胀腐蚀处理 (上面的键盘)
kernel = cv2.getStructuringElement(
    cv2.MORPH_ELLIPSE, (10, 10))  # 椭圆结构:MORPH_ELLIPSE
img1 = cv2.erode(img, kernel)  # 腐蚀
img1 = cv2.dilate(img, kernel)  # 膨胀
cv2.imshow('2', img1)  # 输出腐蚀膨胀后的图像
img1 = img1[200:390, 120:675]  # 截取键盘区域

腐蚀膨胀处理
3.BGR调色处理

img2 = img.copy()  # 复制一张原图
src = img2[200:390, 120:675]  # 截取键盘区域
# 获取图像高度宽度
imgInfo = src.shape
height = imgInfo[0]
weight = imgInfo[1]
# 更改BGR参数 (下面的键盘)
dst = np.zeros((height, weight, 3), np.uint8)  # 返回给定形状和类型的新数组
for i in range(0, height):
    for j in range(0, weight):
        (b, g, r) = src[i, j]
        # 分别将BGR增加一定数值 目的是将绿色的键帽改为粉色
        b += 120
        g += 50
        r  += 180
        # BGR值不超过255
        if b > 255:
            b = 255
        if g > 255:
            g = 255
        if r > 255:
            r = 255
        # 将新的BGR值赋予图像
        dst[i, j] = (b, g, r)
img2[200:390, 120:675] = dst  # 指定位置填充
cv2.imshow('3', img2)  # 输出只改了键盘颜色的图像

BGR处理
4.拼接图像

# 将键盘区域的图像截图添加到原图的上下位置
img[10:200, 120:675] = img1  # 指定位置填充,大小要一样才能填充
img[400:590, 120:675] = dst  # 指定位置填充,大小要一样才能填充

5.绘制图像方框并输出图像

# 绘制键盘外围方框 创建数组 定义四个顶点坐标
pts = np.array([[120, 10], [120, 590], [675, 590], [675, 10]], np.int32)
# 顶点个数:4,矩阵变成4*1*2维,OpenCV中需要将多边形的顶点坐标变成顶点数×1×2维的矩阵
# 这里 reshape 的第一个参数为-1, 表示“任意”,意思是这一维的值是根据后面的维度的计算出来的
pts = pts.reshape((-1, 1, 2))
cv2.polylines(img, [pts], True, (0, 0, 0))  # 框线为黑色 画框

# 输出拼接完成的图像
cv2.imshow('4', img)
end = time.clock()  # 代码停止运行的时刻
print('Running time: %s Seconds'%(end-start))  # 输出代码运行时间
cv2.waitKey(0)

最终结果
Running time: 1.06 Seconds

引入numpy比python自带的列表运算速度更快

学习心得

1.使用OpenCV的工具包:

  • imshow 输出
  • imread 读取
  • copy 复制
  • shape 图像三围
  • polylines 绘制多线
  • waitkey 等待按键
  • erode 腐蚀
  • dilate 膨胀
  • MORPH_RECT 矩形
  • MORPH_CROSS 交叉形
  • MORPH_ELLIPSE 椭圆形
  • reshape 矩阵变维

2.使用numpy的工具包:

一个python的科学计算软件包,应用在数据分析、机器学习、科学运算等领域

  • array 数组
  • zeros 全零数组

3.复习python的一些语法:

  • range 范围
  • a = a+1又可表示为a += 1
  • for的嵌套循环

4.了解了一些图像处理的方法

  • 更改颜色模式(RGB,HSV)
  • 对像素点进行颜色操作
  • 腐蚀和膨胀
  • 选取像素点区域
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值