基于OpenCV的图形分析辨认01

这篇具有很好参考价值的文章主要介绍了基于OpenCV的图形分析辨认01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、实验目的

三、实验内容

四、实验过程


一、前言

编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。

关于OpenCV,numpy,matplotlib,os等第三方库的下载方式如下:

第一步,按住【Windows】和【R】调出运行界面,输入【cmd】,回车打开命令行。

第二步,输入以下安装命令(可以先升级一下pip指令)。

pip升级指令:

python -m pip install --upgrade pip

 opencv库的清华源下载:

pip install opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple

numpy库的清华源下载:

 pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple

matplotlib库的清华源下载:

pip install matplotlib  -i https://pypi.tuna.tsinghua.edu.cn/simple

 os库的清华源下载:

pip install os  -i https://pypi.tuna.tsinghua.edu.cn/simple 

二、实验目的

1.熟悉图像处理开发环境;
2.了解及完成图片读取及写出;
3.了解及完成视频数据读写及写出。

三、实验内容

1.任选一张彩色图及视频(5秒以内)完成课堂教授内容
2.使用下面公式将图片及视频转换成灰阶图,并将图及视频保存下来

Gray = (R + G + B) / 3

3.在彩色图及视频上随机地方著上(R,G,B) = (237, 28, 36)且大小为20 x 20 pixels的正方形,并将图及视频保存下来

四、实验过程

(1)本次实验的图片素材和视频素材如下:

图片命名为“img1.jpg”,像素为450*450,图片样例如下所示:

基于OpenCV的图形分析辨认01,图形分析辨认,opencv,计算机视觉,python,pygame,numpy,图像处理,vscode

视频命名为“video.mp4”,像素为1280*720,视频样例如下所示:

基于OpenCV的图形分析辨认01,图形分析辨认,opencv,计算机视觉,python,pygame,numpy,图像处理,vscode

(2)运用Gray = (R + G + B) / 3将图片和视频转化为灰阶图并保存

彩色图片转化为灰阶图并保存的代码如下所示:

import cv2
import numpy as np

# 图像路径
img_path = r"D:\Image\img1.jpg"
# 读取图像
img = cv2.imread(img_path)
# 获取图像的高度和宽度
height, width = img.shape[:2]
# 创建相同大小但初始值为0的灰度图像
img_gray = np.zeros([height, width], img.dtype)

# 遍历图像的每一个像素点
for i in range(height):
    for j in range(width):
        # 获取像素点的RGB值
        img_values = img[i, j]
        # 计算RGB值的平均值并赋给灰度图像相应像素点
        img_gray[i, j] = int((img_values[0] + img_values[1] + img_values[2]) / 3)

# 展示灰度图像
cv2.namedWindow("img_gray", cv2.WINDOW_AUTOSIZE)
cv2.imshow("img_gray", img_gray)
# 等待按下任意键
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()
# 保存灰度图像
retval = cv2.imwrite(r"D:\Image\img1_gray.jpg", img_gray)

彩色视频转化为灰阶图并保存的代码如下所示:

import cv2
import numpy as np
import os

# 打开视频文件
cap = cv2.VideoCapture(r"D:\Image\video.mp4")
currentframe = 0

# 循环读取视频帧并保存为图片
while (True):
    ret, frame = cap.read()
    if ret:
        name = str(currentframe)
        cv2.imwrite(r"D:\Image\video_img\%s.jpg"%name, frame)
        currentframe += 1
    else:
        break

# 释放视频对象
cap.release()

# 打开图片文件夹
video_img_path = r"D:\Image\video_img"

# 遍历图片文件夹中的所有图片
for img_name in os.listdir(video_img_path):
    img_path = video_img_path + "/" + img_name
    img = cv2.imread(img_path)
    height, width = img.shape[:2]
    # 转换为灰度图
    img_gray = np.zeros([height, width], img.dtype)
    for i in range(height):
        for j in range(width):
            img_values = img[i, j]
            img_gray[i, j] = int((img_values[0] + img_values[1] + img_values[2]) / 3)
    # 保存灰度图
    save_name = img_name.split(".")[0] + "_gray"
    retval = cv2.imwrite(r"D:\Image\video_img_gray\%s.jpg"%save_name, img_gray)
    print(f"第{save_name}张图片已保存")

print("灰阶图已保存完成")

原视频的彩色图片集如下,每一张图片的像素均为1280*720: 

基于OpenCV的图形分析辨认01,图形分析辨认,opencv,计算机视觉,python,pygame,numpy,图像处理,vscode 

 灰阶图的图片集如下:

基于OpenCV的图形分析辨认01,图形分析辨认,opencv,计算机视觉,python,pygame,numpy,图像处理,vscode

将灰阶图的照片集重新制作成视频,代码如下:

import cv2
import os

video_img_path = r"D:\Image\video_img_gray"
# 视频尺寸
img_size = (1280, 720)
# 获取所有图片文件
img_files = os.listdir(video_img_path)
# 图片数量
img_count = len(img_files)
# 视频编码
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 保存视频的路径和名称
video_save = r"D:\Image\video_gray.mp4"
# 创建视频写入对象
video_writer = cv2.VideoWriter(video_save, fourcc, 60, img_size)
# 创建图片数组
img_array = []

for i in range(0, img_count):
    # 构建每张图片的路径
    img_path = video_img_path + "/" + str(i) + "_gray.jpg"
    # 读取每张图片
    img = cv2.imread(img_path)
    # 如果图片读取失败则跳过
    if img is None:
        continue
    img_array.append(img)

for j in range(0, img_count):
    # 调整图片大小
    img_array[j] = cv2.resize(img_array[j], img_size)
    # 将图片写入视频
    video_writer.write(img_array[j])
    print(f"第{j}张图片合成完成")

print("灰度视频合成完成")

 (3)在彩色图及视频上随机地方著上(R,G,B) = (237, 28, 36)且大小为20 x 20 pixels的正方形,并将图及视频保存下来。

彩色图片的随机著色代码如下:

import cv2
import random

# 指定图像路径
img_path = r"D:\Image\img1.jpg"
# 读取图像
img = cv2.imread(img_path)
# 获取图像的高度和宽度
height, width = img.shape[:2]
# 随机生成一个高度和宽度
height_random = random.randint(0, height - 20)
width_random = random.randint(0, width - 20)
# 绘制矩形框
cv2.rectangle(img, (width_random, height_random), (width_random + 20, height_random + 20), (237, 28, 36), -1)
# 创建窗口显示图像
cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图像
retval = cv2.imwrite(r"D:\Image\img1_color.jpg", img)

彩色图片集的随机著色代码如下:

import cv2
import random
import os

video_img_path = r"D:\Image\video_img"

for img_name in os.listdir(video_img_path):
    img_path = video_img_path + "/" + img_name
    img = cv2.imread(img_path)
    # 获取图像的高度和宽度
    height, width = img.shape[:2]
    # 随机生成一个高度和宽度
    height_random = random.randint(0, height - 20)
    width_random = random.randint(0, width - 20)
    # 绘制矩形框
    cv2.rectangle(img, (width_random, height_random), (width_random + 20, height_random + 20), (237, 28, 36), -1)
    save_name = img_name.split(".")[0] + "_color"
    retval = cv2.imwrite(r"D:\Image\video_img_color\%s.jpg"%save_name, img)
    print(f"第{save_name}张着色图片已保存")
    
print("所有图片已保存")

将随机着色后的图像集重新制作成视频,代码如下:

import cv2
import os

video_img_path = r"D:\Image\video_img_color"
# 图像大小
img_size = (1280, 720)
# 视频保存路径
video_save = r"D:\Image\video_color.mp4"
# 获取图像文件列表
img_files = os.listdir(video_img_path)
# 图像数量
img_count = len(img_files)
# 视频编码
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 创建视频写入对象
video_writer = cv2.VideoWriter(video_save, fourcc, 60, img_size)
# 创建图像数组
img_array = []

for i in range(0, img_count):
    # 构建图像路径
    img_path = video_img_path + "/" + str(i) + "_color.jpg"
    # 读取图像
    img = cv2.imread(img_path)
    # 如果图像为空,则跳过本次循环
    if img is None:
        continue
    img_array.append(img)

for j in range(0, img_count):
    # 调整图像大小
    img_array[j] = cv2.resize(img_array[j], img_size)
    # 将图像写入视频
    video_writer.write(img_array[j])
    print(f"第{j}张图片合成完成")

print("随机着色视频合成完成")

 合成后的随机着色视频如下,与原视频时长和帧数相同:

基于OpenCV的图形分析辨认01,图形分析辨认,opencv,计算机视觉,python,pygame,numpy,图像处理,vscode 

 都看到最后了,不点个赞吗?文章来源地址https://www.toymoban.com/news/detail-837334.html

到了这里,关于基于OpenCV的图形分析辨认01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【计算机视觉】基于OpenCV计算机视觉的摄像头测距技术设计与实现

    【计算机视觉】基于OpenCV计算机视觉的摄像头测距技术设计与实现

    在当今技术日益进步的时代,计算机视觉已成为我们生活中不可或缺的一部分。从智能监控到虚拟现实,计算机视觉技术的应用范围日益广泛。在这篇博客中,我们将探索一个特别实用的计算机视觉案例:使用OpenCV实现摄像头测距。这一技术不仅对专业人士有用,也为编程爱

    2024年02月04日
    浏览(16)
  • 计算机毕业分享(含算法) 基于opencv的银行卡识别

    计算机毕业分享(含算法) 基于opencv的银行卡识别

    🔥 今天学长向大家分享一个毕业设计项目 🚩 毕业设计 基于opencv的银行卡识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目运行效果: 毕业设计 机器视觉opencv银行卡识别系统 项目获取: https://gitee.com/sinonfin/algorithm-sharing 银行

    2024年02月02日
    浏览(12)
  • 【实战精选】基于计算机视觉OpenCV的答题卡识别系统

    【实战精选】基于计算机视觉OpenCV的答题卡识别系统

    项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着科技的不断发展,计算机视觉技术在各个领域中的应用越来越广泛。其中,基于计算机视觉的答题卡识别系统在教育领域中具有重要的意义。传统的答题卡批阅方式需要大量的人力和时间,容易

    2024年04月25日
    浏览(12)
  • 计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn

    计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度检测计算算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.co

    2024年02月10日
    浏览(316)
  • 基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛

    基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度检测计算算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.co

    2024年02月07日
    浏览(449)
  • 计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉opencv的手势检测 手势识别 算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 普通机器视觉手势检测的基本流程如下: 其中轮廓的提取,多边形

    2024年02月07日
    浏览(47)
  • 计算机java项目 - 基于opencv与SVM的车牌识别系统

    计算机java项目 - 基于opencv与SVM的车牌识别系统

    基于opencv与SVM的车牌识别系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码,predict.py是算法代码,界面不是重点所以用tkinter写得很简单。 python3.7.3 opencv4.0.0.21 numpy

    2024年02月20日
    浏览(11)
  • 基于深度学习的人脸性别年龄识别 - 图像识别 opencv 计算机竞赛

    基于深度学习的人脸性别年龄识别 - 图像识别 opencv 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 人脸性别年龄识别系统 - 图像识别 opencv 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https

    2024年02月06日
    浏览(51)
  • 计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

    计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 人脸性别年龄识别系统 - 图像识别 opencv 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https

    2024年02月10日
    浏览(46)
  • python基于OpenCV预测图片中目标的实际尺寸(计算机视觉)

    python基于OpenCV预测图片中目标的实际尺寸(计算机视觉)

    本次实验需要根据已知的硬币的直径,预测图片中书本的长与宽以及书本右上方用铅笔画的圆圈的外圆直径。可以先对图片进行矫正,找到硬币的轮廓并计算硬币直径占据的像素大小,进而得到实际尺寸和像素的比例系数,然后找到书本和铅笔绘制的圆圈的轮廓,再根据它们

    2024年02月03日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包