黄岛建网站,wordpress 新页面跳转,百度指数什么意思,网页设计班学费文章目录 一、实验目的二、实验内容三、实验过程OpenCV-python的安装与配置python下载和环境配置PIP镜像安装Numpy安装openCV-python检验opencv安装是否成功 openCV-python的基本操作图像输入和展示以及写出openCV界面编程单窗口显示多图片鼠标事件键盘事件滑动条事件 四、实验… 文章目录 一、实验目的二、实验内容三、实验过程OpenCV-python的安装与配置python下载和环境配置PIP镜像安装Numpy安装openCV-python检验opencv安装是否成功 openCV-python的基本操作图像输入和展示以及写出openCV界面编程单窗口显示多图片鼠标事件键盘事件滑动条事件 四、实验结果五、实验总结 一、实验目的
本实验目的是学习如何使用opencv库来读取文件并显示图象学习opencv中的基本事件——窗口事件鼠标事件、键盘事件以及滑动条事件同时熟悉OpenCV库的函数和方法为进一步学习和应用计算机视觉和图像处理提供基础。
二、实验内容
1、opencv的安装
2、opencv的基本操作 - 图像输入输出模块通过cv2.imread()函数读取图像文件并使用cv2.imshow()函数显示图像。使用cv2.waitKey()等待按键响应然后使用cv2.destroyAllWindows()关闭窗口。使用shape属性获取图像的形状高度、宽度。使用cv2.imwrite()函数将图像保存到指定的文件中。 - opencv界面编程界面编程主要由High-level GUI模块支持。 - 单窗口显示多图片使用hstack函数实现单窗口显示多幅图像。 - 销毁窗口:使用destroyWindow和destroyAllWindows来销毁窗口前者为销毁某一个制定名称的窗口后者为销毁所有的窗口。 - 鼠标事件我们使用鼠标事件来实现与用户的交互操作有鼠标点击事件、鼠标移动事件、鼠标释放事件等。 - 键盘事件键盘事件由waitKey函数实现。 - 滑动条事件使用cv2.createTrackbar()函数创建一个滑动条并指定滑动条的名称、所属窗口、数值范围和初始值等参数。定义一个滑动条事件的回调函数并将其与窗口绑定。在滑动条事件回调函数中根据滑动条的数值变化对图像进行实时更新和显示。
三、实验过程
OpenCV-python的安装与配置
python下载和环境配置
1.前往python官网进行对应版本的下载 2.下载完成打开程序进行配置点击Install Now 也可以进行安装目录的更改 3.检测安装成果打开命令行窗口输入pyhthon
如果显示如下图就安装配置成功 PIP镜像
再命令行窗口分别运行以下两行代码如下图
第一行是更新pip
第二行是把pip对应的国外网站改为镜像国内的提高下载速度 python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 安装Numpy
打开命令行输入 pip install numpy
来下载Numpy包如图不更改pip镜像会很慢
安装openCV-python
命令行运行 pip install opencv-python
如图
再安装一下openCV的扩展包,后面接版本号和我们安装openCV版本一致即可 pip install opencv-contrib-python4.8.0.76
再安装一个可视化库 pip install matplotlib 检验opencv安装是否成功
命令行先输入python
然后导入一下包 import cv2
再检查一下版本 cv2.version
如果能正常显示版本就是安装成功然后exit()退出即可
openCV-python的基本操作
图像输入和展示以及写出 # 读取图像文件src_image cv2.imread(bird.jpg, cv2.IMREAD_COLOR)gray_image cv2.imread(bird.jpg, cv2.IMREAD_GRAYSCALE)cv2.imshow(src_image, src_image)print(src_image.shape)cv2.waitKey(0)# 写入图像文件cv2.imwrite(gray_image.jpg, gray_image)效果展示
图像写入和展示 灰度图像的写入 openCV界面编程 OpenCV界面编程 img cv2.imread(image.jpg) cv2.imshow(mying, img) cv2.waitKey(0)效果展示
对应图片会出现在以mying命名的窗口中 单窗口显示多图片 # 单窗口显示多图片def opencv_muti_pic():img1 cv2.imread(1.jpg)print(img1.shape)img2 cv2.imread(1.jpg)print(img2.shape)img3 cv2.imread(1.jpg)print(img3.shape)imgs np.hstack([img1, img2, img3])# 展示多个cv2.imshow(mutil_pic, imgs)# 等待关闭cv2.waitKey(0)opencv_muti_pic()效果展示 鼠标事件 鼠标事件 # 回调函数用于处理鼠标事件 def mouse_callback(event, x, y, flags, param): if event cv2.EVENT_MOUSEMOVE: # 鼠标移动事件 print(Mouse moved at (%d, %d) % (x, y)) elif event cv2.EVENT_LBUTTONDOWN: # 鼠标左键按下事件 print(Left button down at (%d, %d) % (x, y)) elif event cv2.EVENT_RBUTTONDOWN: # 鼠标右键按下事件 print(Right button down at (%d, %d) % (x, y)) elif event cv2.EVENT_MBUTTONDOWN: # 鼠标中键按下事件print(Middle button down at (%d, %d) % (x, y)) elif event cv2.EVENT_LBUTTONUP: # 鼠标左键释放事件 print(Left button up at (%d, %d) % (x, y)) elif event cv2.EVENT_RBUTTONUP: # 鼠标右键释放事件 print(Right button up at (%d, %d) % (x, y)) elif event cv2.EVENT_MBUTTONUP: # 鼠标中键释放事件 print(Middle button up at (%d, %d) % (x, y))elif event cv2.EVENT_LBUTTONDBLCLK: # 鼠标左键双击事件 print(Left button double-clicked at (%d, %d) % (x, y)) elif event cv2.EVENT_RBUTTONDBLCLK: # 鼠标右键双击事件 print(Right button double-clicked at (%d, %d) % (x, y)) elif event cv2.EVENT_MBUTTONDBLCLK: # 鼠标中键双击事件 print(Middle button double-clicked at (%d, %d) % (x, y))# 创建一个名为 image 的窗口cv2.namedWindow(image)# 读取图像img cv2.imread(image.jpg)# 在窗口中显示图像cv2.imshow(image, src_image)# 设置鼠标回调函数cv2.setMouseCallback(image, mouse_callback)cv2.waitKey(0)# 关闭窗口cv2.destroyAllWindows()效果展示 对应输出结果会随鼠标指针在图像上的位置而变化
键盘事件 # 键盘事件 img7 numpy.zeros((100, 200)) cv2.imshow(windowname, img7 key1 cv2.waitKey(0) # 任意按键按下图片显示结束返回按键键值 print(按下的键值:, key1) cv2.imshow(windowname2, img7) key2 cv2.waitKey(5000) # 任意按键按下图片显示结束返回按键键值 print(按下的键值:, key2) cv2.destroyAllWindows()效果展示
键盘事件
输入q的情况会返回对应的q的ASCII码值 第二个窗口长期不按会显示-1的返回结果 滑动条事件 滑动条事件# 回调函数用于处理滑动条变化事件def TrackbarCallback(value):print(Trackbar value is: %d % value)# 创建一个名为 image 的窗口cv2.namedWindow(image)# 读取图像img cv2.imread(image.jpg)# 在窗口中显示图像cv2.imshow(image, img)# 创建一个名为 slider 的滑动条cv2.createTrackbar(slider, image, 0, 100, TrackbarCallback)# 获取滑动条的当前值slider_value cv2.getTrackbarPos(slider, image)print(Initial slider value: %d % slider_value)# 设置滑动条的值cv2.setTrackbarPos(slider, image, 50)# 循环等待键盘输入while True:key cv2.waitKey(10)if key ord(q):break# 关闭窗口cv2.destroyAllWindows()效果展示 通过鼠标滑动图片上方的滑动条可以再控制台动态的输出滑动条信息 四、实验结果
实验结果已经在实验过程中写出实验结果的所有截图均可在实验过程中查看这里不做过多展示
五、实验总结
通过本次实验我对以下知识有了更好的掌握文件读取和图像显示学习如何使用OpenCV库来读取图像文件并在窗口中显示图像这是图像处理的基础操作。窗口事件了解如何处理窗口事件比如窗口的关闭事件以确保图像显示过程中的交互性和稳定性。鼠标事件学习如何捕获和处理鼠标事件比如点击、移动和拖拽等为图像标记、交互式测量等功能的实现奠定基础。键盘事件掌握如何处理键盘事件比如按键响应和组合操作为实现键盘控制的图像处理流程打下基础。滑动条事件了解如何创建和使用滑动条实现图像处理参数的实时调整和交互式控制。为进一步学习和应用计算机视觉和图像处理奠定基础。