一、开发环境
Python版本:Python3.6
opencv版本:opencv3.4.0
版本查询方式
#python
import sys
print(sys.version)
#opencv
import cv2
print(cv2.__version__)
二、实验前提
安装和配置基本环境,自行百度解决方法
学习Python基本知识,可在慕课网相关课程学习
三、实验
import cv2
def main(pic = '1.jpg'):
img = cv2.imread(pic,0)
cv2.imshow('image',img)
size = img.shape #获取图片大小(长,宽,通道数)
tempimg = cv2.resize(img,(size[1]*2,size[0]*2),cv2.INTER_LINEAR)
cv2.imshow('imag2',tempimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
整体代码如上,接下来我们将一步一步解析
1、导入opencv模块,注意2.*版本的和3.*版本是不一样的
import cv2
2、加载图像
cv2.imread(img_name,command)
img_name为字符串,要读取的图片的名字或者全路径;
command可以为空,默认值为1;0 表示以灰度图方式读取图片;1 表示以彩色度方式读取图片
3、创建显示框并显示图片
cv2.imshow(name,img)#创建并显示
name为字符串,显示框的名字,如下图红色部分;
img为读取的图片信息,是一个numpy数组
namedWindow(name,command)#只创建可调节显示框,需与imshow配合使用
name为字符串,显示框的名字;
command为显示框属性设置,可调整大小cv2.WINDOW_NORMAL或者不可cv2.WINDOW_AUTOSIZE
4、等待用户关闭显示框
cv2.waitKey(0)
cv2.destroyAllWindows()
只有用户点击关闭按钮,显示框才会关闭。不加这两句,显示框会一闪而过。
5、图片的保存
cv2.imwrite(img_name,img,command)
img_name为字符串,图片的保存名字;
img读取的图片信息;
command可省略
6、图片的放大与缩小
img = cv2.imread(pic,0)
size = img.shape#获取图片大小(长,宽,通道数)
size为一个有三个元素的tuple,元素一为图片的行像素点,元素二为图片的列像素点,参数三为通道数(灰度图的通道数为0,彩色图的通道数为3即RGB)
tempimg = cv2.resize(img,(high,whith),command)
img为图片信息;
(high,whith)以(high,whith)去显示图片;
command一般设置为cv2.INTER_LINEAR
扩展例程
import cv2
import tkinter as tk
img = None
def main(pic = '1.jpg'):
global img
img = cv2.imread(pic,0)
cv2.imshow('image',img)
#gui功能
app = tk.Tk()
app.title('功能')
button = tk.Button(app,text='放大',fg='blue',command = button_fun)
button.pack()
app.mainloop()
cv2.waitKey(0)
cv2.destroyAllWindows()
def button_fun():
global img
size = img.shape#获取图片大小(长,宽,通道数)
tempimg = cv2.resize(img,(size[1]*2,size[0]*2),cv2.INTER_LINEAR)
cv2.imshow('imag2',tempimg)
if __name__ == '__main__':
main()
通过按钮将图片放大