python如何删除excel中不满足要求的工作簿(excel怎么删除工作表里不需要的)
1076
2022-05-28
一:图像读取与展示
import cv2 as cv src = cv.imread("d:/ma.jpg") #imread函数,读入一张图片,放在src底下 cv.namedWindow("input",cv.WINDOW_AUTOSIZE) #namedWindow 声明一个窗口,可以在这里调整窗口大小 cv.imshow("intput",src) #imshow函数,展示src底下的照片 cv.waitKey(0) cv.destroyAllWindows()
cv.imread()
cv,imread() 是一个图像读取函数,里面主要输入一个字符串,内容是图像所在的绝对路径或者相对路径。我们需要把完整的路径用双引号保存下来。(请注意,需要提前在路径放好该照片)
补充:cv.imread() 除了直接读取照片,还可以传入第二个参数,比如可以直接设置cv.imread("图像路径",cv.IMREAD_GRAYSCALE),将图像直接读取成灰度图。相关参考资料如下图:
cv.namedWindow()
cv.nameWindow()是一个窗口声明函数。第一个参数是该窗口的标题,第二个参数是窗口的模式。最常用的参数是WINDOW_AUTOSIZE。
其他参数简介如下,感兴趣的话可以参考,或者可以直接看下一个函数的介绍:
WINDOW_NORMAL 或 WINDOW_AUTOSIZE: WINDOW_NORMAL 可以调整窗口大小,而 WINDOW_AUTOSIZE 会自动调整窗口大小以适合显示的图像,并且无法手动更改窗口大小。
WINDOW_FREERATIO 或 WINDOW_KEEPRATIO: WINDOW_FREERATIO 调整图像而不考虑其比例,而 WINDOW_KEEPRATIO 保持图像比例。
WINDOW_GUI_NORMAL 或 WINDOW_GUI_EXPANDED: WINDOW_GUI_NORMAL 是在没有状态栏和工具栏的情况下绘制窗口的旧方法,而 WINDOW_GUI_EXPANDED 是一种新的增强型 GUI。默认情况下,标志 == WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED
cv.imshow()
cv.imshow() 是图像展示函数,我们看代码第5行第一个参数,是图片展示对应的窗口名称。如果该参数和namedWindow设置的窗口大小一致,则会将图片放在该窗口下。如果是一个全新的标题名,OpenCV会参考该参数创建一个对应的新窗口,并展示该图像。
补充:如果窗口是使用WINDOW_AUTOSIZE标志创建的,则图像以其原始大小显示,但仍受屏幕分辨率的限制。否则,它会将缩放图像以适合窗口。该函数可以缩放图像,具体取决于其深度:
如果图像是 8 位无符号,则按原样显示。
如果图像是 16 位无符号或 32 位整数,则将像素除以 256。即值范围 [0,255*256] 映射到 [0,255]。
如果图像是 32 位或 64 位浮点,则像素值乘以 255。即值范围 [0,1] 映射到 [0,255]。
关于展示图像相关的补充:
如果窗口是使用 OpenGL 支持创建的,则cv::imshow还支持ogl::Buffer、ogl::Texture2D和cuda::GpuMat作为输入。
如果在此函数之前没有创建窗口,则假定使用cv::WINDOW_AUTOSIZE创建一个窗口。
如果需要显示大于屏幕分辨率的图像,则需要在 imshow 之前调用 namedWindow("", WINDOW_NORMAL)。
cv.waitKey()
cv.waitKey()是一个键盘绑定函数,时间量度是毫秒ms。函数会等待(n)里面的n毫秒,看是否有键盘输入。当有键盘输入时,则会返回按键的ASCII值。没有键盘输入,则返回-1。一般我们设置为0,他会无限等待键盘的输入。
cv.destroyAllWindows()
cv.destroyAllWindows()是用来删除窗口的,()里不指定任何参数,则删除所有窗口。删除特定的窗口,则需要调用destroyWindow(),往()输入特定的窗口值。主要用于释放变量占用的内存
你可以调用destroyWindow()或 destroyAllWindows()来关闭窗口并取消分配任何相关的内存使用。对于一个简单的程序来说,实际上不必调用这些函数,因为退出时操作系统会自动关闭应用程序的所有资源和窗口。如果任何相关内存使用没有被取消分配,则调用destroyAllWindows()会处理掉分配。如果是简单的使用或确保资源的适当使用,就不需要调用该函数。
二:图像色域转换
a = cv.cvtColor(src , cv.COLOR_BGR2HSV) #转换色域,xxx2xxx #包括以下色域:YCrCb,HSV,HLS,Lab,Luv,Bayer,XYZ,GRAY cv.imshow("output",a)
提醒:当然,import 语句以及cv.waitKey(),cv.destroyAllWindows()都是很重要的语句,在往后部分仅强调核心的部分代码,运行时候记得在首尾加上。
cv.cvtColor()
该函数将输入图像从一种颜色空间转换为另一种颜色空间。 我们主要使用的色域空间如下:YCrCb , HSV , HLS , Lab , Luv , Bayer , XYZ , GRAY
R、G 和 B 通道值的常规范围是:
CV_8U 图像为 0 到 255
CV_16U 图像的 0 到 65535
CV_32F 图像为 0 到 1
如下图所示,output是原图,g-output则是图像处于hsv色域时的图
重点:opencv中的图像通道默认不是RGB,而是BGR,也就是
通道0对应蓝色,通道1对应绿色,通道2对应红色
三:图像的修改
import cv2 as cv import numpy as np m1 = src cv.imshow("m1",m1) #原图 m2 = np.copy(src) #图像拷贝 m2[100:300,300:500,2]=255 #修改像素坐标底下的通道值 cv.imshow("m2",m2) m3 = np.zeros(src.shape, src.dtype) #使用numpy创建一个空图像 cv.imshow("m3", m3) m4 = np.zeros([512,215,3], np.uint16)#高 宽 通道数ch,这里是设置图像大小 m4[:,:,1] =127 #给绿色通道赋值 127 cv.imshow("m4", m4) cv.waitKey(0) cv.destroyAllWindows()
numpy
NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。我们用简写np来描述numpy函数。
np.copy
拷贝矩阵。我们的图像可以看成是一个二维矩阵,可以直接用numpy的copy函数拷贝图像,括号内是要拷贝的图像,然后用 “=” 号赋值给新的变量。
np.zeros
numpy.zeros(shape, dtype = float, order = 'C')
创建指定大小的数组,数组元素以 0 来填充
参数介绍:shape:数组形状。需要传入图像的宽和高。也可以用 image.shape传入数据。
dtype:数据类型。可以参考如下表格:
order:‘C’用于C的行数组。或者用‘F’用于FORTRAN的列数组
在代码中,m2[100:300,300:500,2]=255,是将像素点从左上角开始数,坐标区间【100->300】,【300->500】的像素进行赋值。坐标和值都可以自己设置
四:像素之间的加减法
src = cv.imread("D:/p1.jpg") src2 = cv.imread("D:/p2.jpg") #加法 add_result = np.zeros(src2.shape, src2.dtype) cv.add(src,src2,add_result) cv.imshow("add-result",add_result) #减法 sub_result = np.zeros(src2.shape, src2.dtype) cv.subtract(src,src2,sub_result) cv.imshow("sub_result",sub_result) #乘法 mul_result = np.zeros(src2.shape, src2.dtype) cv.multiply(src,src2,mul_result) cv.imshow("mul_result",mul_result) #除法 div_result = np.zeros(src2.shape,src2.dtype) cv.divide(src,src2,div_result) cv.imshow("div_result",div_result)
cv.add() 加法 ;cv.subtract() 减法 ;cv.multiply() 乘法 ;cv.divide() 除法
这些像素级的图像计算函数共通的,前两个参数为需要参与计算的两张图像,最后一个参数是输出的图像。通常我们会用 np.zeros 函数创建一个新的空图像。然后再放进函数中去
五:像素逻辑运算
#逻辑运算 dst1 = cv.bitwise_and(src, src2)#与运算 dst2 = cv.bitwise_xor(src, src2)#异或运算 dst3 = cv.bitwise_or(src, src2) #或运算 cv.imshow("dst1", dst1) cv.imshow("dst2", dst2) cv.imshow("dst3", dst3)
cv.bitwise主要有四种逻辑运算函数 cv.bitwise_and(按位与) cv.bitwise_not(非运算) cv.bitwise_xor(异或运算) cv.bitwise_or(或运算)
这些像素级的图像计算函数共通的,两个参数为参与运算的两个图像变量。然后用 “=” 号承接图像即可。
AI OpenCV Python 机器视觉
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。