OpenCV计算机视觉(Python实现)-1:处理文件、摄像头和图形用户界面

书名:《OpenCV 3计算机视觉:Python语言实现(原书第2版)》

第2章    处理文件、摄像头和图形用户界面(原书第二版目录)

2.1    基本I/O脚本

2.1.1    读/写图像文件 

2.1.2    图像与原始字节之间的转换

2.1.3    使用numpy.array访问图像数据

2.1.4    视频文件的读/写

2.1.5    捕获摄像头的帧

2.1.6    在窗口显示图像

2.1.7    在窗口显示摄像头帧

2.2    Cameo项目(人脸跟踪和图像处理)

2.3    Cameo——面向对象设计

2.3.1    使用managers.CaptureManager提取视频流

2.3.2    使用managers.WindowManager抽象窗口和键盘

2.3.3    cameo.Cameo的强大实现

2.4    总结

 

 

读/写图像文件

import numpy
import cv2
img = numpy.zeros((3, 3), dtype=numpy.uint8)    # 创建一个黑色的正方形图像
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)     # 将图像转换为BGR格式
print(img.shape)    # 查看图像结构,返回行和列/通道数

image = cv2.imread('home.jpg')
cv2.imwrite('home.png', image)  # 实现图像格式的转换

grayImage = cv2.imread('home.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('homeGray.jpg', grayImage)  # 加载图片为灰度图像

下列选项可以作为imread()函数的参数

IMREAD_ANYCOLOR = 4

IMREAD_ANYDEPTH = 2

IMREAD_COLOR = 1

IMREAD_GRAYSCALE = 0

IMREAD_LOAD_GDAR = 8

IMREAD_UNCHANGED = -1

无论哪一种模式,imread()函数会删除所有alpha通道的信息(透明度)

 

图像与原始字节之间的转换

.array类型的二维或三维数组。如image[0,0]或image[0,0,0]

第一个值代表像素的y坐标或行,0表示顶部

第二个值是像素的x坐标或列,0代表最左边

第三个值(可用)便是颜色通道

# 将含有随机字节的 bytearray 转换为灰度图像和 BGR 图像
# 构建一个包含120000随机字节的数组
randomByteArrray = bytearray(os.urandom(120000))
flatNumpyArray = numpy.array(randomByteArrray)
# 将数组转换为300*400的灰度图像
grayImage = flatNumpyArray.reshape(300,400)
cv2.imwrite('RandomGray.png', grayImage)
# 将数组转换为400*100的彩色图像
bgrImage = flatNumpyArray.reshape(100,400,3)
cv2.imwrite('RandomColor.png', bgrImage)

    灰度图

    彩色图

 

使用numpy.array访问图像数据

# 将BGR图像(0,0)处的像素转化为白像素
img = cv2.imread('home.png')
img[0, 0] = [255, 255, 255]
cv2.imshow('image', img)
cv2.waitKey(0)
# 图像所有的绿值设为0
img = cv2.imread('home.png')
img[:,:,1]=0
cv2.imshow('image',img)
cv2.waitKey(0)
# 图像的一部分拷贝到另一个位置
img = cv2.imread('test.png')
my_roi = img[0:100, 0:100]
img[300:400, 300:400] = my_roi
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

numpy.array获得图像属性,是Python处理图像的基础

shape:numpy返回包含宽度、高度和通道数(针对彩色图像)的数组。第一个程序里有用到

size:图像的像素大小

datatype:得到图像的数据类型

 

 

视频文件的读/写

OpenCV提供了VideoCapture类和VideoWriter类支持各种格式的视频文件

videoCapture = cv2.VideoCapture('video/Input.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)))
# 帧的速率和大小必须指定,通过videoCapture类的get来获取
videoWrighter = cv2.VideoWriter(
    'video/Output.avi', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
success, frame = videoCapture.read()
while success:
    videoWrighter.write(frame)
    success, frame = videoCapture.read()

必须指定解码器,

cv2.VideoWrighter_fourcc('I', '4', '2', '0')未压缩的YUV颜色编码,是4;2:0色度子采样。兼容性好单回产生较大文件

 

 

捕获摄像头的帧

# 获取摄像头10秒的视频信息,并将其写入一个avi文件中
cameraCapture = cv2.VideoCapture(0)
fps = 30
size = (int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),
        int(cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
videoWrighter = cv2.VideoWriter(
    'out.avi', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
success, frame = cameraCapture.read()
numFrameRemaining = 10 * fps - 1
while success and numFrameRemaining > 0:
    videoWrighter.write(frame)
    success, frame = cameraCapture.read()
    numFrameRemaining -= 1
cameraCapture.release()

 

在窗口显示摄像头的帧

# 获取摄像头的视频信息,并将其写入一个avi文件中
# 同时可以在窗口显示摄像头帧,通过鼠标点击来控制视频结束
cliked = False
def onMouse(event, x, y, flag, param):
    global cliked
    if event == cv2.EVENT_LBUTTONUP:
        cliked = True
cameraCapture = cv2.VideoCapture(0)
cv2.namedWindow('MyWindow')
cv2.setMouseCallback('MyWindow', onMouse)
fps = 30
size = (int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),
        int(cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
videoWrighter = cv2.VideoWriter(
    'out.avi', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
success, frame = cameraCapture.read()
while success and cv2.waitKey(1) == -1 and not cliked:
    videoWrighter.write(frame)
    cv2.imshow('MyWindow', frame)
    success, frame = cameraCapture.read()
cv2.destroyWindow('MyWindow')
cameraCapture.release()

 

// 回调事件可以取如下的值,分别对应不同的鼠标事件
cv2.CV_EVENT_MOUSEMOVE  //鼠标移动
cv2.CV_EVENT_LBUTTONDOWN    //鼠标左键按下
cv2.CV_EVENT_RBUTTONDOWN    //鼠标右键按下
cv2.CV_EVENT_MBUTTONDOWN    //鼠标中键按下
cv2.CV_EVENT_LBUTTONUP  //鼠标左键松开
cv2.CV_EVENT_RBUTTONUP  //鼠标右键松开
cv2.CV_EVENT_MBUTTONUP  //鼠标中键松开
cv2.CV_EVENT_LBUTTONDBLCLK  //鼠标左键双击
cv2.CV_EVENT_RBUTTONDBLCLK  //鼠标右键双击
cv2.CV_EVENT_MBUTTONDBLCLK  //鼠标中键双击
// 鼠标回调的标志参数可能是一下事件的按位组合
cv2. CV_EVENT_FLAG_LBUTTON  //鼠标左键拖拽(按下鼠标左键,然后在窗口中拖动鼠标)
cv2.CV_EVENT_FLAG_RBUTTON   //鼠标右键拖拽
cv2.CV_EVENT_FLAG_MBUTTON   //鼠标中键拖拽
cv2.CV_EVENT_FLAG_CTRLKEY   //按下键值CTRL不放
cv2.CV_EVENT_FLAG_SHIFTKEY  //按下键值SHIFT不放
cv2.CV_EVENT_FLAG_ALTKEY    //按下键值ALT不放

 

Cameo项目

 

具体代码见下一个:OpenCV计算机视觉(Python实现)-2

 

 

OpenCV计算机视觉(Python实现)-2

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: CSDN提供了OpenCV 4计算机视觉Python语言实现的下载。OpenCV是一个流行的计算机视觉库,它提供了在图像和视频处理中常用的函数和工具。Python是一个简单易学的编程语言,也是OpenCV的主要支持语言之一。 要下载OpenCV 4的Python语言实现,可以按照以下步骤进行操作: 1. 首先,打开CSDN网站,并在搜索栏中输入"OpenCV 4计算机视觉:Python语言实现"的关键词。点击搜索按钮。 2. 在搜索结果中找到相应的下载链接。通常,下载链接之前会有一些介绍和说明,可以帮助你理解该资源的相关信息。 3. 点击下载链接,可能需要先进行登录或注册。如果是付费资源,可能需要完成购买。 4. 下载完成后,将下载的文件保存到本地电脑的某个文件夹中。可以选择一个容易找到的位置,方便后续的安装和使用。 5. 解压下载的文件(如果有压缩文件),得到一个文件夹。该文件夹中应该包含有OpenCV 4的Python代码和相关的示例。 6. 打开Python集成开发环境(IDE),例如PyCharm、Anaconda等,并创建一个新的Python项目。 7. 将解压后得到的文件夹中的Python代码复制到新项目文件夹中。 8. 在Python项目中运行OpenCV 4的Python代码。可以使用IDE提供的运行按钮或者在命令行中运行相应的命令。 通过以上步骤,你可以从CSDN上下载OpenCV 4的Python语言实现,并在本地搭建和运行计算机视觉应用程序。记得阅读附带的文档和示例,以便更好地理解和应用OpenCV 4库中的函数和方法。 ### 回答2: 要在CSDN上下载OpenCV 4计算机视觉Python语言实现的代码,你可以按照以下步骤进行操作: 1. 打开CSDN网站并登录你的账号。 2. 在网站上方的搜索栏中,输入“OpenCV 4计算机视觉Python语言实现”并点击搜索按钮。 3. 在搜索结果列表中找到与你要下载的内容最相关的文章或资源。 4. 点击进入该文章或资源的详细页面。 5. 在详细页面上,你可以找到文章作者提供的代码下载链接,通常会以类似于“Download”、“Code Download”或者“资源下载”等文字来标识。 6. 点击下载链接,你将被重定向到一个新的页面。 7. 在新页面中,你可能需要先进行人机验证(如输入验证码)。 8. 通过验证后,你可以直接点击下载按钮来下载代码资源。 9. 下载完成后,你可以将代码解压缩到你想要保存的文件夹中。 10. 现在,你可以在本地计算机上使用Python编辑器打开代码,进行阅读和运行。 在下载过程中,你可能会遇到广告或其他弹窗,要小心避免误点击。有时,某些资源需要付费或注册后才能下载,所以请确保你已阅读好相关信息。 以上就是在CSDN上下载OpenCV 4计算机视觉Python语言实现的简要步骤说明。希望这对你有帮助! ### 回答3: 要在CSDN上下载OpenCV 4计算机视觉Python语言实现,可以按照以下步骤进行操作: 1. 打开CSDN官网,或者在搜索引擎中搜索CSDN官网进入主页。 2. 在CSDN主页的搜索栏中输入关键词"OpenCV 4计算机视觉 Python",点击搜索图标。 3. 在搜索结果中找到与所需下载相关的文章或教程,点击进入详情页面。 4. 在详情页面中,可以查看相关内容的详细介绍和下载链接。找到合适的下载链接,点击进入下载页面。 5. 在下载页面中,可以选择下载的方式和格式。选择Python版本,并点击下载按钮。 6. 根据浏览器的设置,可能会出现弹窗询问是否保存文件,选择保存文件并选择保存路径。 7. 下载完成后,找到保存路径下的文件,并解压缩(如果需要)。 8. 打开解压后的文件夹,可以看到其中包含的Python代码和相关数据文件。 9. 打开Python开发环境(如Anaconda),创建一个新的Python项目。 10. 将下载的代码文件复制到新项目中,并确保相关依赖项已安装(如OpenCV、NumPy等)。 11. 打开代码文件,按照代码中的说明运行Python程序。 12. 根据需要,可以根据代码的注释和说明进行修改和调试。 13. 运行程序后,可以看到计算机视觉相关的功能实现,例如图像处理、目标检测等。 14. 根据实际需求进行调整和改进,并保存结果或输出。 以上是在CSDN上下载OpenCV 4计算机视觉Python语言实现的一般步骤,具体过程可能因教程和代码的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值