目录
opencv-python库函数
cv2.imread
cv2.imread(filepath,flags)
读入一副图片(BGR格式mat)
- filepath:要读入图片的完整路径不能有中文
- flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
cv2.cvtColor
cvtColor(Mat src, Mat dst, int code)
是一个颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间转换。也可以转换为灰度图。
- src 表示来源的矩阵。
- dst 表示目的地的矩阵。
- code 表示转换类型的整数代码,例如RGB到灰度。
通过将代码与源矩阵和目标矩阵一起作为参数传递给方法,可以将彩色图像转换为灰度。
cv2.resize
cv.resize(img,(width,height))
主要起到对图片进行缩放的作用。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已
example: 以下代码就可以将原图片转化为宽和长分别为300,300的图片。width和height可以自己任意指定,不论大小。
- img 表示处理图片
- width 表示需要缩放宽度(像素/比例)
- height 表示需要缩放高度(像素/比例)
不明所以
interpolation(插值):这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,有以下几种:
INTER_NEAREST - 最邻近插值
INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
INTER_CUBIC - 4x4像素邻域内的双立方插值
INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
cv2.imencode()
retval, buf = imencode(ext, img, params=None)
将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。
- ext:文件扩展名,以决定输出格式
- img:待编码图像数据
- params:格式化编码为成对的特定参数,该参数可选,由cv::ImwriteFlags定义
- buf:输出的数据流(返回值)
- retval,编码是否成功标志,类型为bool,编码成功返回true,编码失败返回false(返回值)
# -*- coding: utf-8 -*-
import numpy as np
import urllib
import cv2
img = cv2.imread('0122.jpg')
# '.jpg'表示把当前图片img按照jpg格式编码,按照不同格式编码的结果不一样
img_encode = cv2.imencode('.jpg', img)[1]
# imgg = cv2.imencode('.png', img)
data_encode = np.array(img_encode)
str_encode = data_encode.tostring()
# 缓存数据保存到本地
with open('img_encode.txt', 'w') as f:
f.write(str_encode)
f.flush
imshow
参考
https://blog.csdn.net/u013832707/article/details/100705436?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167171687416800192284418%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167171687416800192284418&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-100705436-null-null.142v68control,201v4add_ask,213v2t3_esquery_v1&utm_term=cv.imshow&spm=1018.2226.3001.4187
函数
None = cv.imshow( winname, mat )
该函数将图像在特定的窗口进行显示。
- 第一个参数是窗口的名称
- 第二个是待显示的图像
None = cv.moveWindow( winname, x, y )
作用是将窗口放到指定的位置去,其中xy指代窗口的左上角在屏幕的坐标。
None = cv.namedWindow( winname[, flags])
如果已经存在相同的窗口名称之后,该函数将会不做任何事情。
- WINDOW_NORMAL or WINDOW_AUTOSIZE: WINDOW_NORMAL
使得你能够改变窗口的尺寸,而WINDOW_AUTOSIZE会自适应图像的尺寸。
cv2.waitkey()
https://blog.csdn.net/weixin_44049693/article/details/106271643?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167171856216800215012385%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167171856216800215012385&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-106271643-null-null.142v68control,201v4add_ask,213v2t3_esquery_v1&utm_term=cv2.waitKey&spm=1018.2226.3001.4187
cv.imshow()
waitkey控制着imshow的持续时间
cv2.waitKey(1000) & 0xFF == ord(‘q’)
函数是HighGUI窗口中唯一的获取和处理事件的方法,因此它必须存在。
后必跟函数展示图片
setMouseCallback
cv2.setMouseCallback(winname, onMouse, userdata=0)
winname: 自定义的窗口名
onMouse:鼠标事件的回调函数(在发生鼠标事件时执行)
userdata:传递给回调函数的可选参数
onMouse函数:
onMouse 是鼠标事件回调函数的默认原型,可自定义其函数名和函数内容,参数一般默认为
onMouse(event, x, y, flags, param)
event:cv2_EVENT_* (MouseEventTypes)类型的变量,为当前发生的鼠标事件类型
x和y: 发生鼠标事件时鼠标在图像位置的x,y坐标
flags: cv2_EVENT_FLAG_* (MouseEventFlags)类型的变量
param:自定义的传递给 setMouseCallback 函数调用的参数
MouseEventTypes:
EVENT_MOUSEMOVE #滑动
EVENT_LBUTTONDOWN #左键点击
EVENT_RBUTTONDOWN #右键点击
EVENT_MBUTTONDOWN #中键点击
EVENT_LBUTTONUP #左键放开
EVENT_RBUTTONUP #右键放开
EVENT_MBUTTONUP #中键放开
EVENT_LBUTTONDBLCLK #左键双击
EVENT_RBUTTONDBLCLK #右键双击
EVENT_MBUTTONDBLCLK #中键双击
MouseEventFlags:
EVENT_FLAG_LBUTTON #左键拖曳
EVENT_FLAG_RBUTTON #右键拖曳
EVENT_FLAG_MBUTTON #中键拖曳
EVENT_FLAG_CTRLKEY #按 Ctrl 不放
EVENT_FLAG_SHIFTKEY #按 Shift 不放
EVENT_FLAG_ALTKEY #按 Alt 不放