Python-Opencv 图像处理基本操作(一)
一开始需要import
import cv2
import os
1
2
##########################################
# 读入图片,默认为BGR顺序,读出的变量img类型为uint8, size为(height,width,3)
img = cv2.imread(os.path.join('images', '000906' + '.jpg'))
#读入灰度图片,参数为0,默认为1,读入彩色图片
grayImg = cv2.imread(os.path.join('images', '000906' + '.jpg'), 0)
#显示图片,“Image”为图像窗口名称,img为图像变量,后面要加一句waitKey()
cv2.imshow("Image", img)
cv2.waitKey()
cv2.destroyAllWindows()
#保存图片,第一个参数为保存路径和保存名称,这里为images/12.jpg,第二个参数为需要保存的图像变量
cv2.imwrite(os.path.join('images', '12' + '.jpg'), img)
#输出 (height,width,3),如果是灰度图像为 (height,width)
print img.shape
#输出 height
print img.shape[0]
#输出 width
print img.shape[1]
#输出通道数,彩色图像为3,灰度图像报错,shape没有第三个参数,只有(height,width)
print img.shape[2]
#输出 height×width×3 ,灰度图像输出 height×width
print img.size
#输出 uint8
print img.dtype
##########################################
#缩放图像,有两种形式
img_resized = cv2.resize(img, (width,height), interpolation = cv2.INTER_CUBIC)
img_resized = cv2.resize(img, None, fx = 1.0, fy = 0.5, interpolation = cv2.INTER_CUBIC)
#第一种形式直接输入缩放后图像的大小,注意形式是(width,height)
#第二种形式在输入缩放系数,在缩放系数之前加上None,fx代表列方向(宽度)的缩放系数,fy代表行方向(高度)的缩放系数
#最后的系数interpolation可以选择:
#CV_INTER_NN - 最近邻插值,
#CV_INTER_LINEAR - 双线性插值 (缺省使用)
#CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..
#CV_INTER_CUBIC - 立方插值.
##########################################
#图像通道的拆分与合并
#拆分
b,g,r = cv2.split(img)
#或者是
b = cv2.split(img)[0]
g = cv2.split(img)[1]
r = cv2.split(img)[2]
#合并
img_merge = cv2.merge((b,g,r))
##########################################
#画直线, 第二三个参数指的是直线的起始点,点坐标第一个值是列值,第二个是行值,第三个参数是颜色,顺序bgr,下面的是红色,最后一个参数是宽度
cv2.line(img,(start.column,start.row),(end.column,end.row),(0,0,255),2)
#画矩形,第二三个参数指的是矩形左上角点和右下角点,点坐标第一个值是列值,第二个是行值,第三个参数是颜色,顺序bgr,下面的是蓝色,最后一个参数是宽度
cv2.rectangle(img,(start.column,start.row),(end.column,end.row),(255,0,0),2)
#显示出来
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
##########################################
#读取图像最大值,和最大值索引
img_b = img[:,:,0] #img_b 大小为(height,width)
aa = img_b.max(0) # 按列取最大值,大小为(width,),每个值代表每一列的最大像素值
#aa[:, np.newaxis]可把大小由(width,)变为(width,1)
bb = img_b.argmax(0) # 按列取最大值所在位置,大小为(width,),每个值代表每一列的最大像素值所在的位置
cc = img_b.max(1) # 按行取最大值,大小为(height,),每个值代表每一行的最大像素值
dd = img_b.argmax(1) # 按行取最大值所在位置,大小为(height,),每个值代表每一行的最大像素值所在的位置
img.max() #取三通道中最大的像素值,是一个数值
img.max(0) #按列取每个通道的最大值,大小为(width,3)
img.max(1) #按行取每个通道的最大值,大小为(height,3)
---------------------
作者:残月飞雪
来源:CSDN
原文:https://blog.csdn.net/majinlei121/article/details/78933922
版权声明:本文为博主原创文章,转载请附上博文链接!