Python-Opencv 图像处理基本操作(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/majinlei121/article/details/78933922

Python-Opencv 图像处理基本操作(一)
一开始需要import

import cv2
import os
##########################################
# 读入图片,默认为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)

未完待续…

猜你喜欢

转载自blog.csdn.net/majinlei121/article/details/78933922