opencv常用的函数
一、图像的加载与展示
1、创建窗口
cv2.namedWindow( , )
有两个参数,第一个是窗口名字,第二个是窗口属性,比如:cv2.WINDOW_NORMAL
2、读取图片
cv2.imread( , )
有两个参数,第一个是图片路径,可以用单引号或双引号将其括起来,第二个参数是设置图片颜色,如果不写,则默认为有色图片。
其返回值是一个mat。
3、展示图片(即将图片与窗口绑定在一起)
cv2.imshow( , )
第一个参数是窗口名,第二个参数是imread读出的结果,是一个mat。

[ WARN:0@0.012] global /Users/runner/work/opencv-python/opencv-python/opencv/modules/imgcodecs/src/loadsave.cpp (239) findDecoder imread_('algorithm.jpg'): can't open/read file: check file path/integrity Traceback (most recent call last): File "/Users/dns/Desktop/study/MYOPENCV/testopencv.py", line 5, in <module> cv2.imshow('orign',img) cv2.error: OpenCV(4.6.0) /Users/runner/work/opencv-python/opencv-python/opencv/modules/highgui/src/window.cpp:967: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'
4、展示时间
waitKey( )
0则是一直加载,其他的里面是几就是加载几毫秒,然后关闭窗口。
5、关闭窗口
key = waitKey(0)
if(key == 'q'): exit()
其实这样写有个bug,就是按任何键都会退出。

from configparser import Interpolation import cv2 img = cv2.imread('algorithm_code.jpg') new = cv2.resize(img, None, fx = 0.5, fy = 0.5, interpolation = cv2.INTER_AREA) while True: cv2.imshow('origin', img) cv2.imshow('new', new) key = cv2.waitKey(0) if(key & 0xFF == ord('q')): break elif(key & 0xFF == ord('s')): cv2.imwrite("/Users/dns/Desktop/study/MYOPENCV/algorithm_code.bmp", img) cv2.destroyAllWindows()
6、销毁所有窗口
destroyAllWIndows()
二、图像的缩放
1、解释resize()函数中各参数
resize(src, dst, dsize, fx, fy, interpolation)
src :原图像
dst :是大小改变后的图像,对于C++来说,需要传递一个输出参数,但对于Python来说就不用了,而是需要通过等于号去赋值,赋值给目标图像。
dsize :是目标的尺寸
fx :x轴的缩放因子,比如:fx = 0.7的话,就是表示目标长度 = 原来长度 * 0.7
fy :y轴的缩放因子
dsize和fx、fy是冲突的,两个任选一个即可,当然都写上去也没错。
在resize中默认使用dsize,如果它为None,那么就使用fx、fy。
interpolation :插值算法,也就是当图像缩放的时候,用的缩放的算法

from configparser import Interpolation import cv2 img = cv2.imread('algorithm_code.jpg') new = cv2.resize(img, None, fx = 0.5, fy = 0.5, interpolation = cv2.INTER_AREA) while True: cv2.imshow('origin', img) cv2.imshow('new', new) key = cv2.waitKey(0) if(key & 0xFF == ord('q')): break elif(key & 0xFF == ord('s')): cv2.imwrite("/Users/dns/Desktop/study/MYOPENCV/algorithm_code.bmp", img) cv2.destroyAllWindows()
2、缩放算法
INTER_NEAREST,邻近插值,速度快,效果差
INTER_LINEAR,双线性插值,只计算原图中的4个点,速度快,效果好,一般默认这个
INTER_CUBIC,三次插值,计算原图中16个点,更平滑,效果更好,用的时间会较长
INTER_AREA,效果最好,用时也是最长的
参考文章:https://blog.csdn.net/xidaoliang/article/details/86504720
三、保存图片
inwrite(name, img)
name是要保存的文件名,文件的格式可以跟原来不一样,比如原来图片的类型是.jpg,可以转成.png。
img是mat类型
四、图像旋转
4.1 rotate(img, rotateCode)
img表示要进行旋转的图像
rotateCode表示多少度顺逆时针旋转,比如:ROTATE_90_CLOCKWISE(顺时针旋转90度)、ROTATE_180(旋转180度,顺逆时针的结果都是一样的)、ROTATE_90_COUNTERCLOCKWISE(逆时针旋转90度,相当于顺时针旋转270度)
当然这个函数只能够固定旋转90的倍数,不能灵活旋转。
4.2 灵活旋转

import cv2 import matplotlib.pyplot as plt # 1 读取图像 img = cv2.imread('algorithm_code.jpg') # 2 图像旋转 rows,cols = img.shape[:2] # 2.1 生成旋转矩阵 旋转中心点坐标 角度 缩放比例 M1 = cv2.getRotationMatrix2D((cols/2,rows/2),30,1) M2 = cv2.getRotationMatrix2D((cols/2,rows/2),-30,1) # 2.2 进行旋转变换 dst1 =cv2.warpAffine(img,M1,(cols,rows)) dst2 =cv2.warpAffine(img,M2,(cols,rows)) # 3 图像展示 fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(10,8),dpi=100) axes[0].imshow(img[:,:,::-1]) axes[0].set_title("orign") axes[1].imshow(dst1[:,:,::-1]) axes[1].set_title("new1") axes[2].imshow(dst2[:,:,::-1]) axes[2].set_title("new2") plt.show()
- img.shape[:2]的意思: 取彩色图片的长、宽。 参考文章:https://blog.csdn.net/LoriaLi/article/details/124664437
- cv2.warpAffine()这个函数要注意的是,传入的M是mat矩阵,是矩阵!矩阵!!旋转后的矩阵!!!
dst是指要输出图像 参考文章:https://blog.csdn.net/m0_51545690/article/details/123959995
plt.subplots()
是一个函数,返回一个包含figure和axes对象的元组。因此,使用fig,axes = plt.subplots()
将元组分解为fig和axes两个变量。
nrows,ncols:有多少行子图,多少列子图
figsize 是用来设置图像的大小的
dpi是指像素,每英寸长度内的像素点数
axes[0]表示第一个子图,以此类推 参考文章:https://blog.csdn.net/qq_39622065/article/details/82909421
- img[: , : , : : -1]的理解
用opencv(即cv2)读取图片,是以BGR的形式来读取的。而最后我们要看到的图片和原来的图片一致,就需要将BGR转成RGB形式,
所以需要执行 [:,:,::-1]后,让数组会左右翻折,也就是把BRG转换成RGB。
参考文章:https://blog.csdn.net/u014453898/article/details/93716118
五、图片的剪切
import cv2 img=cv2.imread('algorithm_code.jpg') cat = img[50:60,45:55] #截取矩阵的w:50~60,h:45~55 cv2.imshow('img',img) cv2.imshow('cat',cat) cv2.waitKey(0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」