一、图像基本的操作内容
1、获得图像像素,修改定义图像像素。
2、获得图像的特性
3、提取兴趣区域
4、将图像的像素通道进行分离和合并
参考教程:https://docs.opencv.org/master/d3/df2/tutorial_py_basic_ops.html
二、额外用到的两个库
Numpy 和Matplotlib
# Author Copyright LAPLA.Inc Time: 2018/8/11
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img=cv.imread("he.jpg",1)
gray_img=cv.imread("he.jpg",0)
#Drawing and Writing text on image
# cv.line(img,(0,0),(200,200),(0,0,255),2,cv.LINE_AA)
# cv.putText(img,'helin',(10,180),cv.FONT_HERSHEY_SIMPLEX,0.5,(123,100,50),2)
#####Access pixs of a iamge#####
# pix=gray_img[0,0] #访问图片的某个像素,输入坐标即可访问,img[row,column],如果是灰度图,则得到的是图像的像素点的强度,如果是彩色图像,则得到彩色图的(B,G,R)值。
# pix1=img[0,0] #访问单个像素
# # print(pix,pix1)
# gray_img[:,100]=0 #将第十列的像素值赋值为0,像这种访问一个区域的像素值用Numpy库效率会更高。访问单个用Numpy则会降低效率
# print(img.item(10,10,2)) #用Numpy访问单个像素,用arry.iterm()和arry.setiterm((10,10,2),100).注意此处用的是圆括号,而不是方括号,另外openc里图像的通道顺序为BGR,而不是RGB格式
# img.itemset((10,10,2),100)
# print(img.item(10,10,2))
# #####Accessing Image Properties#####
# print(img.shape,gray_img.shape)#如果图像为彩色图像,则返回值为图像的大小和通道数;灰色图像只返回图像的大小
# print(gray_img.size,img.size) #统计像素数量,灰度图为n=row*colomn.彩色图为n=row*column*通道数。
# print(img.dtype,gray_img.dtype)#查看图像的数据类型
# #####Image ROI#####
# roi=img[50:100,50:100]#图像的区域第50行到第100行,第50列到第100列
# img[150:200,150:200]=roi#赋值区域到图像上。注意roi的大小要和放入区域的大小一致
# # #####Splitting and Merging Image Channels#####
# b,g,r=cv.split(img)#源对象必须是多通道的阵列。分离出BGR的值,也可以这样单独获得某个通道的值:r=img[:,:,2],":"两边为空表示所有的意思。注意cv.split()比较耗费运算时间,最好用Numpy.
# merge_img=cv.merge((r,g,b))#将这三个矩阵合并为一个图像
# cv.imshow("merge",merge_img)
# print(b,g,r)
# img[:,:,0]=0#把img图像的B通道赋值为0.
# #####Making Boeders for Image#####
# border=cv.copyMakeBorder(img,10,10,10,10,cv.BORDER_CONSTANT,value=(0,0,255))#cv.BORDER_CONSTANT为边界的类型,有很多种,比如镜像等,只有是cv.BORDER_CONSTANT类型时,才可以用value值定义边框的颜色
# cv.imshow("he3",border)
# #####Matplotlib Application#####
# plt.subplot(121),plt.imshow(img),plt.title("Colorful")#subplot()画子图,参数表示展示几行几列第几个图,plt.imshow()显示的通道顺序为RGB,而cv.imshow()顺序为BGR
# plt.show()
cv.imshow("he",gray_img)
cv.imshow("he2",img)
cv.waitKey(0)