Python与OpenCV图像简单操作

Python与OpenCV图像简单操作

OpenCV安装

打开命令行输入 pip install opencv-python(前提是有python环境)

1.读取图片

使用 cv2.imread() 函数,给出了几种读取图片路径的写法

import cv2#导入opencv包

#python中不需要声明变量
img1 = cv2.imread("D:/test/1.jpg")#绝对路径,推荐
img2 = cv2.imread("D:\\test\\2.jpg")#通常是两个斜线,单右斜线会被当成转义符
img3 = cv2.imread("3.jpeg")#相对路径,将图片放在py文件对应目录下

cv2.imshow("test1", img1)
cv2.imshow("test2", img2)
cv2.imshow("test3", img3)
cv2.waitKey(0)#没有这一句图片会一闪而过

2.保存图片

使用 cv2.write() 函数保存图片

import cv2# 导入OpenCV包

img=cv2.imread("D:/test/3.png",cv2.IMREAD_COLOR)
cv2.imshow("test",img)#OpenCV可以实现不同格式图片转换,支持jpg、bmp、png等图片格式相互无损转换

cv2.imwrite("D:/test/3.1.png",img)#将改变后的图像保存
cv2.imwrite("D:/test/3.2.bmp",img)
cv2.waitKey(0)

3.截取部分图像

import cv2
img   = cv2.imread("D:\\test\\2.jpg")
frame = img[200:400,200:400] #截取部分图像,200-400行,200-400列

cv2.imshow("test",frame)#显示截取后的图像
cv2.waitKey(0)

4.图片翻转

使用cv2.flip(img,flipcode)来进行图片翻转
flipcode控制图片翻转方向

import cv2

img=cv2.imread("D:/test/5.jpg",cv2.IMREAD_COLOR)

flipCode1=1#大于0左右翻转
flipCode2=0#等于0上下翻转
flipCode3=-1#小于0先上下翻转再左右翻转

img1 = cv2.flip(img, flipCode1)#filpCode控制图片翻转方向
img2 = cv2.flip(img, flipCode2)
img3 = cv2.flip(img, flipCode3)

cv2.imshow("test",img)
cv2.imshow("test1",img1)
cv2.imshow("test2",img2)
cv2.imshow("test3",img3)
cv2.waitKey(0)

5.缩放图片

cv2.resize(img,dsize,fx,fy),dsize和fx,fy都可以设置图片大小,不能同时为0

import cv2# 导入OpenCV包

img  = cv2.imread("D:/test/2.jpg",cv2.IMREAD_COLOR)
img1 = cv2.resize(img, (700, 700))#设置输出图片的尺寸
img2 = cv2.resize(img, None, fx=0.7, fy=0.7)#None的位置本来是输出图片的尺寸,这里设置了缩放因子

#fx-水平轴上的比例因子,fy-垂直轴上的比例因子
cv2.imshow("test",  img)
cv2.imshow("test1", img1)
cv2.imshow("test2", img2)
cv2.imwrite("D:/test/resize.jpg", img1)# 保存图像
cv2.waitKey(0)

6.转换为灰度图像

cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

cv2.COLOR_RGB2GRAY表示把RGB图像转为灰度图像,2前是转换前,2后是转换后

import cv2#导入opencv包

#python中不需要声明变量
img = cv2.imread("D:/test/1.jpg")#cv2.imread读进来的图片格式是BGR(W,H,C),而不是RGB
cv2.imshow("BGR", img)

#将图像转换为RGB格式
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)#因为opencv读取图片是按BGR读的,所以转换为RGB反而不像原图
cv2.imshow("RGB",img1)

#将图像转换为灰度图像
img2 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
cv2.imshow("GRAY",img2)
cv2.waitKey(0)

7.在一个窗口中显示两张图片

import cv2
import numpy as np

img  = cv2.imread("D:/test/resize.jpg")
img2 = cv2.imread("D:/test/resize.jpg")
#imgs = np.hstack([img,img2])#在水平方向上平铺
imgs = np.vstack([img,img2])#在竖直方向上堆叠

cv2.imshow("mutil_pic", imgs)
cv2.waitKey(0)

8.绘图功能

import cv2
import numpy as np

img  = 255*np.ones((400,512,3),np.uint8)#unit8:0~255
font = cv2.FONT_HERSHEY_DUPLEX
#font = cv2.FONT_HERSHEY_COMPLEX# 设置字体

#文本          # 图片对象、文本、    位置、 字体、字体大小、颜色、     字体粗细
cv2.putText(img, "happy day", (50,300), font, 0.8, (25, 25, 25), 2,)#颜色可以自己调整,范围为0-255
#线             #起点      终点       颜色    粗细
cv2.line(img, (50,310), (185,310), (0, 0,0),4)
#矩形               #左上顶点 右下顶点
cv2.rectangle(img, (80,8), (200,100), (0, 255,0),2)
#圆形             #圆心   半径 颜色    控制是否填充 -1表示填充
cv2.circle(img,(60,60),30,(0,0,213),1)
#椭圆            #中心点   长轴 短轴 偏转角度,起始角度,终止角度
cv2.ellipse(img,(100,300),(100,50),180,0,360,(20,213,79),1) 
cv2.imshow("Draw", img)
cv2.waitKey(0)

猜你喜欢

转载自blog.csdn.net/Lianhaiyan_zero/article/details/102760779
今日推荐