OpenCV必知必会基础3(包括色彩空间的变换、ROI、OpenCV中最重要的结构体Mat以及获取图像的属性)

文章目录

  • OpenCV的色彩空间——RGB与BGR
  • OpenCV的色彩空间——HSV与HSL
    • HSV主要用于OpenCV中
    • HSL
  • OpenCV色彩空间转换
    • YUV主要用于视频中
    • 题目
  • 图像操作的基石Numpy【基础操作】
    • np.array
    • np.zeros
    • np.ones
    • np.full
    • np.identity
    • np.eye
  • Numpy基本操作之矩阵的检索与赋值
  • Numpy基本操作三——ROI(Region of Image)
  • OpenCV的重要结构体Mat
    • Mat属性
  • Mat的深拷贝与浅拷贝
    • Mat浅拷贝
    • Mat深拷贝
  • 图像的多种属性
  • 通道的分割与合并

在这里插入图片描述

OpenCV的色彩空间——RGB与BGR

主要用于物理硬件显示器中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OpenCV的色彩空间——HSV与HSL

HSV主要用于OpenCV中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HSL

在这里插入图片描述
在这里插入图片描述

OpenCV色彩空间转换

YUV主要用于视频中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
详情见官网手册
在这里插入图片描述
在这里插入图片描述
cvtColor函数

# -*- coding: utf-8 -*-
import cv2def callback():pass# 创建窗口
cv2.namedWindow('color', cv2.WINDOW_NORMAL)img = cv2.imread('E://pic//love_girl_guy_beach_sea_peter_smile_couple_5760x3840.jpg')colorspaces = [cv2.COLOR_BGR2RGBA, cv2.COLOR_BGR2BGRA, cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2HSV, cv2.COLOR_BGR2YUV]cv2.createTrackbar('curcolor', 'color', 0, len(colorspaces), callback)while True:index = cv2.getTrackbarPos('curcolor', 'color')# 颜色空间转换APIcvt_img = cv2.cvtColor(img, colorspaces[index])cv2.imshow('color', cvt_img)key = cv2.waitKey(10)if key & 0xff == ord('q'):breakcv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题目

在这里插入图片描述
A
在这里插入图片描述

图像操作的基石Numpy【基础操作】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

np.array

在这里插入图片描述
在这里插入图片描述

np.zeros

在这里插入图片描述
在这里插入图片描述

np.ones

在这里插入图片描述
在这里插入图片描述

np.full

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

np.identity

在这里插入图片描述
在这里插入图片描述

np.eye

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Numpy基本操作之矩阵的检索与赋值

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = np.zeros((480, 640), np.uint8)cnt = 0
while cnt < 200:img[cnt, 100] = 255cnt += 1cv2.imshow('img', img)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)cnt = 0
while cnt < 200:# BGRimg[cnt, 100, 0] = 255cnt += 1cv2.imshow('img', img)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)cnt = 0
while cnt < 200:img[cnt, 100] = [0, 0, 255]cnt += 1cv2.imshow('img', img)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

Numpy基本操作三——ROI(Region of Image)

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)# cnt = 0
# while cnt < 200:
#     img[cnt, 100] = [0, 0, 255]
#     cnt += 1
roi = img[100:400, 200:600]
roi[:] = [0, 255, 0]cv2.imshow('img', roi)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)# cnt = 0
# while cnt < 200:
#     img[cnt, 100] = [0, 0, 255]
#     cnt += 1
roi = img[100:400, 100:600]
roi[:] = [0, 255, 0]
roi[:, 100] = [0, 0, 0]
roi[10:200, 10:200] = [255, 0, 0]cv2.imshow('img', roi)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

OpenCV的重要结构体Mat

在这里插入图片描述
在这里插入图片描述

Mat属性

在这里插入图片描述

Mat的深拷贝与浅拷贝

在这里插入图片描述
红色是我们原先创建的mat,蓝色是我们之后创建的mat,我们把A赋给B,默认浅拷贝

Mat浅拷贝

拷贝的是header,并没有拷贝data
在这里插入图片描述

Mat深拷贝

让Mat B独立,拷贝了一份data,完全和Mat A独立开来
在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = cv2.imread('E://pic//2.jpg')# 默认浅拷贝
img2 = img# 深拷贝
img3 = img.copy()img[10:100, 10:100] = [0, 255, 66]
cv2.imshow('img', img)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

图像的多种属性

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = cv2.imread('E://pic//2.jpg')
# shape属性中包含三个信息
# 高度、长度、通道数
print(img.shape)# 图像占用多大空间
# 高度 * 长度 * 通道数
print(img.size)# 图像中每个元素的位深
print(img.dtype)

在这里插入图片描述

通道的分割与合并

在这里插入图片描述
变成一个颜色的二维数组就没有颜色了,就只有黑白色之分了

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = cv2.imread('E://pic//2.jpg')b, g, r = cv2.split(img)
b[10:100, 10:100] = 255
g[10:100, 10:100] = 255
r[10:100, 10:100] = 255cv2.imshow('img', img)
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

# -*- coding: utf-8 -*-
import cv2
import numpy as npimg = cv2.imread('E://pic//2.jpg')b, g, r = cv2.split(img)
b[10:100, 10:100] = 255
g[10:100, 10:100] = 255
# r[10:100, 10:100] = 255img2 = cv2.merge((b, g, r))cv2.imshow('img', img)
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)
cv2.imshow('img2', img2)key = cv2.waitKey(0)
if key & 0xff == ord('q'):cv2.destroyAllWindows()

在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/179377.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

051-第三代软件开发-日志容量时间限制

第三代软件开发-日志容量时间限制 文章目录 第三代软件开发-日志容量时间限制项目介绍日志容量时间限制 关键字&#xff1a; Qt、 Qml、 Time、 容量、 大小 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language…

Python Web APP在宝塔发布

本地测试运行&#xff1a;uvicorn main:app --host 127.0.0.1 --port 8082 --reload 宝塔发布&#xff1a; 运行配置——>启动模式&#xff1a;worker_class uvicorn.workers.UvicornWorker

德迅云安全为您介绍关于抗D盾的一些事

抗D盾概述&#xff1a; 抗D盾是新一代的智能分布式云接入系统&#xff0c;接入节点采用多机房集群部署模式&#xff0c;隐藏真实服务器IP&#xff0c;类似于网站CDN的节点接入&#xff0c;但是“抗D盾”是比CDN应用范围更广的接入方式&#xff0c;适合任何TCP 端类应用包括&am…

web缓存-----squid代理服务

squid相关知识 1 squid的概念 Squid服务器缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。 Squid代理服务器&#xff08;Squid proxy server&#xff09;一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。…

pg_bouncer在使用中的坑勿踩

目录 简介 环境信息 问题配置 问题配置 启动pgbouncer 链接逻辑图 测试存在问题 pgadmin4 Idea JAVA调用 ​编辑 dbeaver 建议&#xff1a; 简介 前面文章说过关于pg_bouncer的安装讲解&#xff0c;这里讲一下在使用中的坑&#xff0c;在进行配置的时候需要注意。 …

6、使用本地模拟器调试项目

本地模拟器推荐内存为16G以上&#xff0c;最低内存要求8G&#xff08;比较卡顿&#xff09; 一、安装本地镜像 1、在开发工具的“文件”菜单中选择“设置” 2、在“设置”中选择“SDK”&#xff0c;在右侧勾选“System-image-phone”&#xff0c;点击“应用”开始安装 3、点击…

载誉前行 | 求臻医学MRD检测方案荣获金如意奖·卓越奖

2023年11月11日 由健康界、海南博鳌医学创新研究院 中国医药教育协会数字医疗专业委员会联合主办的 第三届“金如意奖”数字医疗优选解决方案 评选颁奖典礼 在2023中国医院管理年会上揭晓榜单并颁奖 求臻医学MRD检测解决方案 荣获第三届金如意奖最高奖项——卓越奖 这一…

没有第一、第二学历之分!成人学历一样可以填补学历空缺

如果你还在纠结成人学历是不是第一学历的问题&#xff0c; 可以来看看官方怎么说。 &#xff08;图片来源&#xff1a;教育部官网&#xff09; 请问专升本&#xff08;非成人高招专升本&#xff09;毕业后的第一学历是专科还是本科&#xff1f; 学历是指人们在教育机构中接…

rabbitmq 集群搭建

RabbitMQ集群介绍 RabbitMQ集群是一组RabbitMQ节点&#xff08;broker&#xff09;的集合&#xff0c;它们一起工作以提供高可用性和可伸缩性服务。 RabbitMQ集群中的节点可以在同一物理服务器或不同的物理服务器上运行。 RabbitMQ集群的工作原理是&#xff0c;每个节点在一个…

[论文阅读] CLRerNet: Improving Confidence of Lane Detection with LaneIoU

Abstract 车道标记检测是自动驾驶和驾驶辅助系统的重要组成部分。采用基于行的车道表示的现代深度车道检测方法在车道检测基准测试中表现出色。通过初步的Oracle实验&#xff0c;我们首先拆分了车道表示组件&#xff0c;以确定我们方法的方向。我们的研究表明&#xff0c;现有…

【halcon】外观检测总结之灰度操作

1 灰度操作之 滞后延时 *滞后阈值 hysteresis_threshold (ImageInvert, RegionHysteresis, 190, 220, 3)这句话的意思就是&#xff0c;逐个判断这个图片区域里像素的灰度值&#xff0c;如果这个值小于190就不考虑了pass掉&#xff0c;如果大于220就直接入选。值在190和220之间…