opencv+python入门之二(像素操作)

我们有时会对图像重某一个像素进行操作,一种方法是用opencv进行操作,另一种方法是用python中的numpy库进行操作。

首先要分享的是用opencv中的方法进行操作:

  1. 读取图片
  2. 获取某一点像素值
  3. 重新设置像素值

相关代码如下:

import cv2

img = cv2.imread('F:\python\work\cv_learn\lena.jpg',1)
pix = img[100,200,0]#获取(100,200)处B通道的像素值  注意img后是中括号
pix1 = img[100,200]#获取(100,200)处的像素值  注意img后是中括号
print(pix1,pix)
img[100:200,200:300] = 0 #将这一区域像素设置为0
cv2.imshow('result',img)#显示图像
cv2.waitKey(0)#保持图像

运行结果如下:可见Lena中我们设置的方形区域变黑。 打印窗口中先输出的list为BGR三个通道的像素值,当然也可以单独获取某一通道的像素值,如pix1那一行代码。

这里numpy的方法便不尽人意:实现步骤与opencv中差不多,代码如下:

import cv2
import numpy as np

img = cv2.imread('F:\python\work\cv_learn\lena.jpg',1)
p = img.item(100,200,0)
print(p)
img.itemset((100,200,0),0)
img.itemset((100,200,1),0)
img.itemset((100,200,2),0)
cv2.imshow('result',img)#显示图像
cv2.waitKey(0)#保持图像

总结:本人感觉不尽人意的地方时numpy方法必须指定某一通道值才可以进行访问,否则便会报错。例如读取彩色图时,如果没有指定某一通道,opencv中默认一次性返回三个通道的值,而numpy却会报错。此外要注意这两种方法有的是对tuple进行操作,有的是对list进行操作,这也是一点不同之处。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值