(Python)从零开始,简单快速学机器仿人视觉Opencv---第六节:OpenCV图像的一些基本操作

提前准备

使用工具Python3.5
使用包cv2,numpy

任务1 获取并修改像素值

  读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值

import cv2
import numpy
img = cv2.imread('45.jpg')
px=img[100,100]
print(px)
blue = img[100,100,0]
print(blue)
img[101,101]=[255,255,255]
print(img[101,101])

  numpy是经过优化了的进行快速矩阵运算的包,所以不推荐逐个获取像素值并修改能矩阵运算就不要用循环。
  例如前5行的后3列,用numpy的array.item()和array.itemset()会更好。但是返回是标量,如果想获得所有RGB的值,需要使用array.item()分割他们。
更好的方法是

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))

任务2 获取图像属性

图像属性包括:行,列,通道,图像数据类型,像素数目等

 成员1:
 img.shape 调用这个成员可以获得图像的形状,返回值是一个包含行数,列数,通道数的元组

实例代码:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.shape)

  如果图像是灰度图,返回值仅有行数和列数,所以通过检查返回值可以判断是灰度图还是彩色图

成员2:
img.size 可以返回图像的像素数目

实例代码:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.size)

像素的数目=行数 x 列数 x 通道数

成员3
img.dtype返回图像的数据类型,在debug时很重要,因为OpenCV-Python代码中经常出现数据类型的不一致

实例代码:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.dtype)

总结

(本系列每周不定期更新,谢谢大家支持!)

发布了39 篇原创文章 · 获赞 69 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_19408097/article/details/101379553