正规的企业网站建设,邮箱格式怎么写,哈尔滨的网站设计,东莞黄江做网站1、基本I/O脚本
1.1 读/写图像文件
import numpy
import cv2#利用二维Numpy数组简单创建一个黑色的正方形图像
img numpy.zeros((3,3),dtypenumpy.uint8)
img
#结果为#xff1a;array([[0, 0, 0],[0, 0, 0],[0, 0, 0]], dtypeuint8)img.shape#结果为#xff1a;(3, 3)###…1、基本I/O脚本
1.1 读/写图像文件
import numpy
import cv2#利用二维Numpy数组简单创建一个黑色的正方形图像
img numpy.zeros((3,3),dtypenumpy.uint8)
img
#结果为array([[0, 0, 0],[0, 0, 0],[0, 0, 0]], dtypeuint8)img.shape#结果为(3, 3)####################################################################利用cv2.cvtColor函数将该图像转化为BGR格式
img1 cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
img1
#结果为array([[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]]], dtypeuint8)img1.shape#结果为(3, 3, 3)①将图像从PNG格式转换为JPG格式 ②将BGR图片转化为灰度图片
import cv2image cv2.imread(result.png)
cv2.imwrite(show.jpg,image)grayImage cv2.imread(result.png,cv2.IMREAD_GRAYSCALE)
cv2.imwrite(gray.png,grayImage)运行前 运行后
1.2 图像与原始字节之间的转换
将含有随机字节的bytearray转换为灰度图像和BGR图像
import cv2
import numpy
import osrandomByteArray bytearray(os.urandom(120000))
flatNumpyArray numpy.array(randomByteArray)grayImage flatNumpyArray.reshape(300,400)#(yx)
cv2.imwrite(RandomGray.png,grayImage)bgrImage flatNumpyArray.reshape(100,400,3)#(y,x,颜色通道数目)
cv2.imwrite(RandomColor.png,bgrImage)运行前 运行后
1.3 使用numpy.array访问图像数据
将BGR图像在(10,10)处的像素转换为红像素
import cv2
import numpy as npimg cv2.imread(result.png)
img[10,10] [0,0,255]#[B,G,R]
cv2.imshow(yy,img)
cv2.waitKey(0)
cv2.destroyAllWindows()结果为
将坐标(150,120的当前蓝色值(127)变为255
import cv2
import numpy as np
img cv2.imread(result.png)
print(img.item(50,20,0))
#pixel
img.itemset((150,20,0),255)
print(img.item(50,20,0))
cv2.imshow(yy,img)
cv2.waitKey(0)
cv2.destroyAllWindows()结果为
操作通道将指定通道(B,G,R)的值置为零下列代码将图像所有的R通道设置为0(黑色)为了是效果更加明显这里将图片选择纯红色的彩色照片。
import cv2
import numpy as np
img cv2.imread(red.jpg)
img[:,:,2] 0
cv2.imshow(yy,img)
cv2.waitKey(0)
cv2.destroyAllWindows()原始照片 运行结果
将该区域与变量绑定然后设定第二个区域并将第二个区域的值分配给第二个区域(将图像的一部分拷贝到改该图像的另一个位置)
原始图片 运行结果
获得图像属性 shape:Numpy返回包含宽度、高度和通道数如果图像是彩色的的数组这在调试图像类型时很有用如果图像是单色或灰度的将不包含通道值。 size该属性是指图像像素的大小。 datatype该属性会得到图像的数据类型通常为一个无符号整数类型的变量和该类 型占的位数比如uint8类型。
import cv2
import numpy as np
img cv2.imread(result.png)
print(img.shape)#结果为(250, 250, 3)
print(img.size)#结果为187500
print(img.dtype)#结果为uint81.4 视频文件的读/写
Opencv提供了 Video Capture类和 Videowriter类来支持各种格式的视频文件。支持的格式类型会因系统的不同而变化但应该都支持AWI格式。在到达视频文件末尾之前Video Capture类可通过 reado函数来获取新的帧每帧是一幅基于BGR格式的图像。 可将一幅图像传递给 Video Writer类的 write(0函数该函数会将这幅图像加到Videowriter类所指向的文件中。
读取AVI文件(hahaha.avi)的帧并采用YUV颜色编码将其写人另一个帧(xixixi.flv)中
import cv2
videoCapture cv2.VideoCapture(hahaha.avi)
fps videoCapture.get(cv2.CAP_PROP_FPS)
size (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
videoWriter cv2.VideoWriter(xixixi.flv,cv2.VideoWriter_fourcc(F,L,V,1),fps,size)success,frame videoCapture.read()
while success:videoWriter.write(frame)success,frame videoCapture.read()运行结果
代码文件扩展名备注cv2.VideoWriter fouree (T’, ‘4’‘2’‘0’).avi该选项是一一个未压缩的YUV颜色编码是4:2:0色度子采样。这种编码有很好的兼容性但会产生较大文件。cv2.VideoWriter_ fouree (‘P’T’, ‘M’, ‘1’).avi该选项是MPEG-1编码类型。cv2.VideoWriter_ fourcc (‘X’, ‘V’T, ‘D’).avi该选项是MPEG-4编码类型如果希望得到的视频大小为平均值推荐使用此选项。cv2.VideoWriter_ fourcc(‘T’,‘H’,‘E’ ‘O’).ogv该选项是Ogg Vorbiscv2.VideoWriter_ fourcc (‘F’‘L’, ‘V’, ‘1’).flv该选项是一个Flash视频
1.5 捕获摄像头的帧并保存
捕获摄像头10s的视频信息并写入一个AVI文件中
import cv2cameraCapture cv2.VideoCapture(0)
fps 30
size (int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
videoWriter cv2.VideoWriter(siqi.avi,cv2.VideoWriter_fourcc(I,4,2,0),fps,size)success,frame cameraCapture.read()
numFramesRemaining 10*fps-1
while success and numFramesRemaining 0:videoWriter.write(frame)success,frame cameraCapture.read()numFramesRemaining - 1
cameraCapture.release()运行结果
1.6 在窗口显示图像
import cv2
import numpy as npimg cv2.imread(gray.png)
cv2.imshow(siqi_show,img)
cv2.waitKey()
cv2.destroyAllWindows()运行结果
1.7 在窗口显示摄像头帧
OpenCV的窗口函数和waitKey()函数相互依赖。OpenCV 的窗口只有在调用waitKey()函数时才会更新waitKey()函数只有在OpenCV窗口成为活动窗口时才能捕获输人信息。鼠标回调雨数setMouseCallback()有五个参数。param为可选参数它是setMouseCallback(函数的第三个参数默认情况下该参数是0。 实时显示摄像头帧按任意键结束
import cv2clicked False
def onMouse(event,x,y,flags,param):global clickedif event cv2.EVENT_LBUTTONUP:clicked TruecameraCapture cv2.VideoCapture(0)
cv2.namedWindow(siqi)
cv2.setMouseCallback(siqi,onMouse)print(press any key to stop!)
success,frame cameraCapture.read()
while success and cv2.waitKey(1) -1 and not clicked:cv2.imshow(siqi,frame)success,frame cameraCapture.read()cv2.destroyWindow(siqi)
cameraCapture.release()运行结果 回调事件参数可以取如下的值它们分别对应不同的鼠标事件。
回调事件参数事件描述cv2.EVENT MOUSEMOVE该事件对应鼠标移动cv2. EVENT LBUTTONDOWN该事件对应鼠标左键按下cv2. EVENT RBUTTONDOWN该事件对应鼠标右键按下cv2.EVENT MBUTTONDOWN该事件对应鼠标中间键按下cv2.EVENT LBUTTONUP该事件对应鼠标左键松开cv2.EVENT_ RBUTTONUP该事件对应鼠标右键松开cv2.EVENT MBUTTONUP该事件对应鼠标中间键松开cv2.EVENT LBUTTONDBLCLK该事件对应双击鼠标左键cv2.EVENT RBUTTONDBLCLK该事件对应双击鼠标右键cv2.EVENT MBUTTONDBLCLK该事件对应双击鼠标中间键
鼠标回调的标志参数可能是以下事件的按位组合
鼠标回调的标志参数对应事件描述cv2.EVENT FLAG LBUTTON该事件对应按下鼠标左键cv2.EVENT FLAG RBUTTON该事件对应按下鼠标右键cv2.EVENT FLAG MBUTTON该事件对应按下鼠标中间键cv2.EVENT FLAG CTRLKEY该事件对应按下Ctrl键cv2.EVENT FLAG SHIFTKEY该事件对应按下Shift 键cv2.EVENT FLAG ALTKEY该事件对应按下Alt键
OpenCV不提供任何处理窗口事件的方法。例如当单击窗口的关闭按钮时并不能关闭应用程序。