C++实战Opencv第二天——色彩空间转换函数和opencv中图像对象创建与赋值(从零开始,保姆教学)

OpenCV是一个强大的计算机视觉库,使用C++作为主要编程语言,对于图像处理和计算机视觉领域具有重要意义。其提供了丰富的功能和算法,使得开发者能够快速实现各种图像处理和计算机视觉应用。OpenCV C++为图像处理和计算机视觉领域的开发者提供了一个高效、稳定的工具。通过OpenCV的函数库和模块,可以方便地进行图像读取、保存、调整大小、滤波、边缘检测等常见的图像处理操作。而且,OpenCV还支持各种图像格式,包括JPEG、PNG、BMP等,使得开发者能够处理不同类型的图像数据。OpenCV C++提供了丰富的计算机视觉算法,如特征提取、目标检测、人脸识别、光流估计等。这些算法可以帮助开发者解决实际问题,比如在智能交通系统中进行车辆检测与跟踪,或者在安防系统中进行行人识别与监控。同时,OpenCV还提供了机器学习和深度学习的支持,使得开发者能够应用各种机器学习算法和深度神经网络模型进行图像分类、目标识别和场景理解等。OpenCV C++具有跨平台的特性,可以在不同操作系统(如Windows、Linux、macOS)上进行开发和部署。这为开发者提供了更大的灵活性,使得他们能够针对不同的应用场景选择合适的平台。OpenCV C++具有较高的性能和可扩展性。它使用了优化的C++代码和多线程技术,能够在处理大规模图像数据时保持高效率。同时,OpenCV C++还支持GPU加速,通过利用图形处理器的并行计算能力,加速图像处理和计算机视觉算法的执行速度。

综上所述,OpenCV C++为开发者提供了丰富的功能和算法,使得他们能够快速构建各种图像处理和计算机视觉应用。无论是在科学研究、工业应用还是个人项目中,OpenCV C++都发挥着不可替代的作用,推动着图像处理和计算机视觉的发展。

一、色彩空间转换函数与图像保存

1.色彩空间转换函数- cvtColor

COLOR_BGR2GRAY = 6 彩色到灰度

COLOR_GRAY2BGR = 8 灰度到彩色

COLOR_BGR2HSV = 40 BGR到HSV

COLOR_HSV2BGR = 54 HSV到BGR

2.图像保存- imwrite

第一个参数是图像保存路径

第二个参数似乎图像内存对象

配置属性表:

属性管理器->新建项目属性表

 

建立opencv属性表。建立后,双击打开,然后配置包含目录 ,配置库目录,配置链接器,配置过程如第一天。

C++实战Opencv第一天——win11下配置vs,opencv环境和运行第一个c++代码(从零开始,保姆教学)_win11 opencv测试-CSDN博客

以后新建项目,就可以直接添加opencv属性表,不用再配置了。 

完整代码:

main.cpp:

#include<opencv2/opencv.hpp>
#include<quickopencv.h>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = imread("D:/workspaces/图片/bus.jpg");if (src.empty()) {printf("could not load image....\n");return -1;}namedWindow("输入窗口", WINDOW_FREERATIO);imshow("输入窗口", src);Quickdemo qd;qd.colorSpace_Demo(src);waitKey(0);destroyAllWindows();return 0;
}

quickdemo.cpp:

#include<quickopencv.h>void Quickdemo::colorSpace_Demo(Mat& image) {Mat gray, hsv;cvtColor(image, hsv, COLOR_BGR2HSV);cvtColor(image, gray, COLOR_BGR2GRAY);imshow("HSV", hsv);imshow("灰度", gray);imwrite("D:/workspaces/图片/hsv.jpg",hsv);imwrite("D:/workspaces/图片/gray.jpg",gray);}

quickopecv.h:

#pragma once
#include<opencv2/opencv.hpp>using namespace cv;class Quickdemo {public:void colorSpace_Demo(Mat& image);
};

 

 二、opencv中图像对象创建与赋值

1.c++中mat对象与创建

2.python中numpy数据对象

Mat赋值时, 只是修改指针,还是这个数据,只有克隆时,才会产生新的数据。

 main.py:

#include<opencv2/opencv.hpp>
#include<quickopencv.h>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = imread("D:/workspaces/图片/bus.jpg");if (src.empty()) {printf("could not load image....\n");return -1;}namedWindow("输入窗口", WINDOW_FREERATIO);imshow("输入窗口", src);Quickdemo qd;//qd.colorSpace_Demo(src);qd.mat_creation_demo(src);waitKey(0);destroyAllWindows();return 0;
}

 quickdemo.cpp:

#include<quickopencv.h>void Quickdemo::colorSpace_Demo(Mat& image) {Mat gray, hsv;cvtColor(image, hsv, COLOR_BGR2HSV);cvtColor(image, gray, COLOR_BGR2GRAY);imshow("HSV", hsv);imshow("灰度", gray);imwrite("D:/workspaces/图片/hsv.jpg",hsv);imwrite("D:/workspaces/图片/gray.jpg",gray);}void Quickdemo::mat_creation_demo(Mat& image)
{Mat m1, m2;m1 = image.clone();image.copyTo(m2);//创建空白图像 8UC1:8位,UC无符号的,1单通道的Mat m3 = Mat::zeros(Size(8, 8), CV_8UC1);std::cout << m3 << std::endl;
}

quickopencv.h:

#pragma once
#include<opencv2/opencv.hpp>using namespace cv;class Quickdemo {public:void colorSpace_Demo(Mat& image);void mat_creation_demo(Mat& image);
};

 

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

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

相关文章

【实战】阿里智能编码助手通义灵码

文章目录 前言技术积累通义灵码是什么&#xff1f;Copilot是什么&#xff1f;通义灵码主要功能通义灵码有哪些优势&#xff1f;通义灵码支持语言/工具通义灵码接入方式通义灵码帮助中心 实战演示安装插件行/函数级实时续写自然语言生成代码代码优化单元测试生成代码注释生成解释…

【RPA】什么是RPA

一、什么是RPA? RPA&#xff0c;全称机器人流程自动化&#xff0c;是一种利用机器人技术实现工作信息与业务交互自动化的过程。它能够按照预先设计的流程&#xff0c;高效地处理大量的工作信息与业务交互&#xff0c;极大地节约了人工成本。如今&#xff0c;RPA已成为智能化软…

贪心算法篇

“靠漫步&#xff0c;将生趣填饱~” 贪心算法简介&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;也称为贪婪算法&#xff0c;是一种在解决问题时采取贪心策略的方法。其基本原理是很简单的&#xff1a; “在每个决策点上都选择当下看似最好的选项…

《动手学深度学习(PyTorch版)》笔记7.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

FANUC机器人PROF-017从机断开故障报警处理方法总结

FANUC机器人PROF-017从机断开故障报警处理方法总结 情况说明&#xff1a; 机器人安装的是PROFINET板卡&#xff0c;按照手册进行PROFINET配置之后&#xff0c;重启控制柜&#xff0c;此时系统提示&#xff1a;PROF-017 从机断开&#xff0c; 如下图所示&#xff0c; 打电话咨…

HTML5和CSS3强化知识总结

HTML5的新特性 HTML5的新增特性主要是针对于以前的不足&#xff0c;增一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题&#xff0c;基本是IE9以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 HTML5新增的语义…

ubuntu 18.04修改网卡名称

1.原来网卡配置 现在要把enp3s0的名称改为eth0 2. 总共修改三个文件 第一个修改 sudo vi /etc/default/grub 添加最后一行 GRUB_CMDLINE_LINUX"net.ifnames0 biosdevname0" 第二个修改sudo vi /etc/udev/rules.d/70-persistent-net.rules 如果没有就新建文件&a…

uniapp android和微信小程序实现PDF在线预览

在使用uniapp开发移动端时&#xff0c;微信开发者工具里webview能正常打开后端接口返回的pdf文件流。正式发布后&#xff0c;在配置了业务域名和服务器域名的前提下&#xff0c;预览pdf文件却只能看到白屏&#xff0c;因此我猜测微信小程序不能通过webview读取文件流。这个想法…

python接口自动化(五)--接口测试用例和接口测试报告模板(详解)

简介 当今社会在测试领域&#xff0c;接口测试已经越来越多的被提及&#xff0c;被重视&#xff0c;而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试&#xff0c;很多测试人员在接触到接口测试的时候&#xff0c;也许对测试执行还可以比较顺利的上手…

C2-Search-Netlas:一款基于Netlas API的强大C2服务器识别与检测工具

关于C2-Search-Netlas C2-Search-Netlas是一款功能强大的命令与控制&#xff08;C2&#xff09;服务器检测工具&#xff0c;该工具使用Java语言开发&#xff0c;基于Netlas API实现其功能&#xff0c;可以帮助广大研究人员轻松快速地识别和检测目标C2服务器的相关信息。 C2-S…

Redis之基础篇

Redis简介 Redis是一种基于键值对&#xff08;Key-Value&#xff09;的NoSQL数据库&#xff0c;它支持string&#xff08;字符串&#xff09;、hash&#xff08;哈希&#xff09;、list&#xff08;列表&#xff09;、set&#xff08;集合&#xff09;、zset&#xff08;有序集…

随机图论基础

一&#xff0c;随机图、随机图空间 1&#xff0c;随机图 一个n个点的无向图&#xff0c;最多有sn(n-1)/2条边。 每条边都有一定的概率存在&#xff0c;有一定概率不存在&#xff0c;那么每个图都有一个出现概率。 2&#xff0c;随机图空间 一共有2^s种不同的图&#xff0c…

[word] word怎么让字在横线上居中 #学习方法#媒体#媒体

word怎么让字在横线上居中 word怎么让字在横线上居中&#xff1f; 在word文档中&#xff0c;有时为了某些字句突出显示&#xff0c;需要用下划线来表示&#xff0c;当着重显示部分为金额、面积或某些选项时&#xff0c;需要一条长下划线上左右有空白&#xff0c;而文字在下划…

【vscode】windows11在vscode终端控制台中打印console.log()出现中文乱码问题解决

1. 问题描述 在前端开发过程中使用vscode编写node.js&#xff0c;需要在控制台中打印一些中文信息&#xff0c;但是一直出现中文乱码问题&#xff0c;英文和数字都显示正常。在网上试了很多设置的办法&#xff0c;最终找到windos11设置中解决。 2. 原因 首先打开控制台&…

centos 7.7 离线安装docker

centos 7.7 离线安装docker Index of linux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x86_64/ 【1】离线下载docker 压缩包上传至 /usr/local 目录&#xff0c;解压缩&#xff0c;并复制到 /usr/bin/ 目录中。 cd /usr/local/tar -zxvf docke…

力扣 第 123 场双周赛 解题报告 | 珂学家 | 二维偏序+单调队列优化

前言 执手看歌敲金钗&#xff0c;笑语落珠明眸睐。 忽然蝴蝶春风满&#xff0c;焉教冷镜瘦朱颜。 整体评价 T3是基于map的前缀和的变形题&#xff0c;T4是二维偏序的一道应用题。 题外话&#xff0c;力扣还是实现N久之前的承诺了&#xff0c;命名权奖励&#xff0c;赞一个。 …

7隐藏进程_Linux_Rootkit.md

Xcellerator 密码学Linux其他逆向工程 文章目录 [Linux Rootkit 第 7 部分&#xff1a;隐藏进程](https://xcellerator.github.io/posts/linux_rootkits_07/)选择要隐藏的 PID隐藏 PID Linux Rootkit 第 7 部分&#xff1a;隐藏进程 2020-10-01 :: TheXcellerator # linux #…

Quartus IP 之mif与hex文件创建与使用

一、mif与hex概述 ROM IP的数据需要满足断电不丢失的要求&#xff0c;ROM IP数据的文件格式一般有三种文件格式&#xff1a;.mif、.hex、.coe&#xff0c;Xilinx与Intel Altera支持的ROM IP数据文件格式如下&#xff1a; Xilinx与Altera支持的ROM文件格式 Alterahex、mifAM&am…

pwn学习笔记(2)

pwn学习笔记&#xff08;2&#xff09; 1.三种常见的寄存器&#xff1a; ​ ax寄存器&#xff1a;通用寄存器&#xff0c;可用于存放多种数据 ​ bp寄存器&#xff1a;存放的是栈帧的栈底地址 ​ sp寄存器&#xff1a;存放的是栈顶的地址 2.栈帧与栈工作的简介&#xff1a…

SplitFed: When Federated Learning Meets Split Learning

论文链接&#xff1a; [2004.12088v1] SplitFed: When Federated Learning Meets Split Learning (arxiv.org) AAAI 2022 摘要&#xff1a; 联邦学习分割学习&#xff1a;消除其固有的缺点的两种方法&#xff0c;以及结合差分隐私和PixelDP的精细架构配置&#xff0c;以增强…