一幅被定义为二维函数f(x,y)坐标的图像,亮度为任何坐标(x,y)处的振幅。当f的x,y和振幅都是有限且离散的量时,称为数字图像。
filename中不包含任何路径信息时,imread会从当前目录中寻找并读取图像文件。若当前目录中没有所需要的文件,则会尝试在父目录下搜寻。
src = cv.imread('D:/OpenCV/opencv-python/coins.png')
@param winname Name of the window.
@param mat Image to be shown.
cv.imshow('input image', src)
filename为保存的路径,若不包含路径信息,则imwrite会将文件保存到当前的工作目录中。
img为需要保存的文件名。
params为一些可选参数,比如图片为哪种格式。
cv.imwrite('D:/OpenCV/opencv-python/coins1.png', src)
c = cv.waitKey(50)
if c == 27:
break
import cv2 as cv
import numpy as np
# 读取视频
def video_demo():
capture = cv.VideoCapture('D:/OpenCV/20220305_11.mp4') # 中间加入视频文件可以打开
while True:
ret, frame = capture.read()
"""
src:输入数组。
DST:输出数组的大小和类型与src相同。
flipCode:指定如何翻转数组的标志;0表示绕x轴翻转,而正值(例如,1)表示绕y轴翻转。负值(例如,-1)表示在两个轴上翻转。
"""
frame = cv.flip(frame, 1)
cv.imshow('video', frame)
c = cv.waitKey(1)
if c == 27:
break
# 读取图像
def get_image_info(image):
"""
type(object_or_name, bases, dict)
type(object) -> the object's type
type(name, bases, dict) -> a new type
"""
print(type(image))
# 返回的是图像的行数,列数,色彩通道数
print(image.shape)
# 数组元素的总个数,等于shape属性中元组元素的乘积
print(image.size)
# type:返回数据结构类型(list、dict、numpy.ndarray等)
# dtype:返回数据元素的数据类型(int、float等)
print(image.dtype)
# array 模块就是数组,可以存放放一组相同类型的数字;array(‘b’)创建出的数组就只能存放一个字节大小的整数,范围从 -128到127
pixel_data = np.array(image) # numpy的值
print(pixel_data)
print("-------Hello Python-------")
src = cv.imread('D:/OpenCV/opencv-python/coins.png')
"""
namedWindow(winname[, flags]) -> None
winname:窗口的名字
flags:窗口类型,CV_WINDOW_AUTOSIZE表明窗口大小自动适应图片大小,并且不可手动更改。 CV_WINDOW_NORMAL表明窗口可以被随意拖动改变大小。
"""
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
"""
@param winname Name of the window.
@param mat Image to be shown.
"""
cv.imshow('input image', src)
get_image_info(src)
# 写入图像,保存起来
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imwrite('D:/OpenCV/opencv-python/coins1.png', src)
video_demo()
cv.waitKey(0)
# 释放掉变量所占用的内存
cv.destroyAllWindows()
print('Hi,Python!')