Python Opencv中对于图片的处理

Python Opencv中对于图片的处理

先看成效:
处理前:
处理前
处理后:
使用BGR(200, 145, 162)
再来一张:
使用BGR(100, 145, 162)
OK,现在来瞧一瞧如何使用超级简单的方法实现这一处理:
首先,基本的导入模块:

import cv2
import numpy as np

下一步,自然是载入图片:

image = cv2.imread("01.jpg", cv2.IMREAD_COLOR)

然后把它显示出来:

cv2.imshow("Work", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

咋一看,处理呢?别急,现在开始写.

def handle_image(img, size, color):
    for x in range(size[0][0], size[1][0]):
        for y in range(size[0][1], size[1][1]):
            for rgb in range(3):
                c = img.item(x, y, rgb)
                c += color[rgb]
                c = 0.5*c
                img.itemset((x, y, rgb), c)

我们来分析一下这段代码:

第一行 def handle_image(img, size, color):

  • img 就是要处理的矩阵,也就是窗口
  • size也就是要进行透明处理的范围,是一个数组,结构:[[左上角横坐标,左上角纵坐标],[右下角横坐标,右下角纵坐标]],即[[x1,y1],[x2,y2]]
  • color自然就是有色玻璃的颜色了

第二行 for x in range(size[0][0], size[1][0]):

  • 进行一个循环,从x1到x2

第三行 for y in range(size[0][1], size[1][1]):

  • 一样的道理

第四行 for rgb in range(3):

  • 通道的循环

自此,该循环已将size中的所有像素的RGB都遍历了一遍
接下来就很简单了,
先获得(x,y)这像素rgb的值(这里的rgb其实只为其中一个)
c = img.item(x, y, rgb)
将有色玻璃的对应的值与原颜色值相加
c += color[rgb]
颜色相加原则,再除以2
c = 0.5*c
然后把它写回去
img.itemset((x, y, rgb), c)
这样,就完成了>>>>>>>
来,放全部代码:

import cv2
import numpy as np

RED = (0, 0, 255)
GREEN = (0, 255, 0)


def handle_image(img, size, color):
    for x in range(size[0][0], size[1][0]):
        for y in range(size[0][1], size[1][1]):
            for rgb in range(3):
                c = img.item(x, y, rgb)
                c += color[rgb]
                c = 0.5*c
                img.itemset((x, y, rgb), c)


# image = np.zeros([600, 600, 3])
# cv2.circle(image, (300, 300), 100, GREEN, 5)
image = cv2.imread("01.jpg", cv2.IMREAD_COLOR)
handle_image(image, ((100, 100), (500, 500)), (100, 145, 162))

cv2.imshow("Work", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码中注释的两行说明…
对,只要是图像,都可以处理!
before
after
哈哈,数了数才25行代码,
嗯,人生苦短,我用python.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值