python对图像进行处理_20190911_随笔小实现_对图像进行像素处理

这篇博客介绍了如何使用Python的cv2库对图像进行像素级别的处理,包括按位异或操作、修改像素值以保留特定颜色区域,如红点和内圈橙色,并通过加运算恢复颜色。
摘要由CSDN通过智能技术生成

20190911

使用 python 库 cv2 对图像进行了抠图,按位异或,修改像素值 等操作

目标图1:imgS

目标图2:imgG

对两图进行按位异或操作:

代码:

1 imgR = cv2.bitwise_xor(imgS, imgG)

2 cv2.imshow("imgR", imgR)

结果图像:imgR

目标图3:(对此图处理,只保留红点和内圈橙)imgOperate

内圈橙色区域 BGR_橙 = [39, 127, 255]

红点 BGR_红 = [36, 28, 236]

尝试1:遍历每一个像素,将像素值不为 BGR_橙的点像素修改为 [0,0,0],将 BGR_橙改为 [255,255,255]

代码片段:

1 px_3C = [39, 127, 255] # B,G,R

2

3 for hIx in range(0, height, 1): # height

4 for wIx in range(0, width, 1): # width

5

6 # if imgOperate[hIx, wIx] != [39, 127, 255]: # 不能这么操作

7 # imgOperate[hIx, wIx] = [0, 0, 0]

8 # else:

9 # imgOperate[hIx, wIx] = [255, 255, 255]

10

11 for cIx in range(channel): # 对每一个像素点的每一个通道值进行修改

12 if imgOperate[hIx][wIx][cIx] != px_3C[cIx]:

13 imgOperate[hIx][wIx][cIx] = 0

14 else:

15 imgOperate[hIx][wIx][cIx] = 255

16

17 cv2.imshow("imgOperate after Op:", imgOperate)

尝试1结果图像:imgOperate

遗漏分析,没有考虑到外圈黄色区域 BGR_黄 = [0,242,255],在尝试1方法中,第三个 for 遍历 channel Red 时会发生误操作(即保留红色区域红色通道的值)

尝试2:遍历每一个像素点,依据像素值条件修改或保留像素值,即将橙色区域赋值 [255,255,255],红点区域保留原像素值

代码片段:

1 for hIx in range(height):

2 for wIx in range(width):

3 if imgOperate_C[hIx][wIx][0] == 39 and imgOperate_C[hIx][wIx][1] == 127 and imgOperate_C[hIx][wIx][2] == 255: # 橙色区域,改像素

4 imgOperate_C[hIx][wIx][0] = 255

5 imgOperate_C[hIx][wIx][1] = 255

6 imgOperate_C[hIx][wIx][2] = 255

7 elif imgOperate_C[hIx][wIx][0] == 36 and imgOperate_C[hIx][wIx][1] == 28 and imgOperate_C[hIx][wIx][2] == 236: # 红色区域,保留像素

8 imgOperate_C[hIx][wIx][0] = 36

9 imgOperate_C[hIx][wIx][1] = 28

10 imgOperate_C[hIx][wIx][2] = 236

1 else: # 非目标像素 [0, 0, 0]

2 imgOperate_C[hIx][wIx][0] = 0

3 imgOperate_C[hIx][wIx][1] = 0

4 imgOperate_C[hIx][wIx][2] = 0

尝试2结果图像:imgOperate_C

分析:已经把目标区域边界和目标点成功的抠出。

将尝试2结果图像与结果图像进行加运算 cv2.add()

代码:

1 imgR_ROI = cv2.add(imgR, imgOperate_C)

结果图像:imgR_ROI

将结果图像 [255,255,255] 区域还原橙色 [39, 127, 255]

1 for hIx in range(height):

2 for wIx in range(width):

3 if imgR_ROI[hIx][wIx][0] == 255 and imgR_ROI[hIx][wIx][1] == 255 and imgR_ROI[hIx][wIx][2] == 255:

4 imgR_ROI[hIx][wIx][:] = [39, 127, 255]

最终结果图像:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值