[14] CUDA_使用Opencv处理图像

CUDA_使用Opencv处理图像

1. Opencv中的图像表示

  • Opencv 提供了Mat 类来存储图像,如下:
cv::Mat img;
img=cv::imread("cameraman.tif);
  • 定义图像的示例:
//定义单通道图像
cv::Mat img(6,6,CV_8UC1);
//32位浮点型
Mat img2(256,256,CV_32FC1);
Mat img3(1960,1024,CV_64FC3);
  • 图像的分辨率和大小决定该图像保存到磁盘上的空间,假设有3个通道、大小为1024X1024的彩色图像,则需要 3X1024X1024 bytes = 3MB 空间来存放这个图像。

2. 图像的读取和显示

  • 图像读取与显示实现如下:
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv)
{// Read the image Mat img = imread("images/cameraman.tif",0);// Check for failure in reading an Imageif (img.empty()) {cout << "Could not open an image" << endl;return -1;}
//Name of the windowString win_name = "My First Opencv Program"; // Create a windownamedWindow(win_name); // Show our image inside the created window.
imshow(win_name, img); // Wait for any keystroke in the window 
waitKey(0); //destroy the created windowdestroyWindow(win_name); return 0;
}

3. 使用Opencv 创建图像

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv)
{//Create blanck black color Image with seze 256x256Mat img1(256, 256, CV_8UC1, Scalar(0));String win_name1 = "Blank Image";namedWindow(win_name1,0);imshow(win_name1, img1);//Create blank blue color Image with size 256x256Mat img(256, 256, CV_8UC3, Scalar(255, 0, 0));String win_name = "Blank Blue Color Image";namedWindow(win_name,0);imshow(win_name, img);waitKey(0);destroyWindow(win_name1);destroyWindow(win_name);return 0;
}

在这里插入图片描述

  • 在空白图像上绘制形状:
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv)
{//create a new image which consists of //3 channels //image depth of 8 bits //800 x 600 of resolution (800 wide and 600 high)//each pixels initialized to the value of (100, 250, 30) for Blue, Green and Red planes respectively.Mat img(512, 512, CV_8UC3, Scalar(0, 0, 0));//画线line(img, Point(0, 0), Point(511, 511), Scalar(0, 255, 0), 7);//矩形rectangle(img, Point(384, 0), Point(510, 128), Scalar(255, 255, 0), 5);//画圆circle(img, Point(447, 63), 63, Scalar(0, 0, 255), -1);//椭圆ellipse(img, Point(256, 256), Point(100, 100), 0, 0, 180, 255, -1);//添加文字putText(img, "OpenCV!", Point(10, 500), FONT_HERSHEY_SIMPLEX, 3,Scalar(255, 255, 255), 5, 8);String win_name = "Blank Blue Color Image"; //Name of the windownamedWindow(win_name); // Create a windowimshow(win_name, img); // Show our image inside the created window.waitKey(0); // Wait for any keystroke in the windowdestroyWindow(win_name); //destroy the created windowreturn 0;
}

在这里插入图片描述

  • 保存图像
bool flag=cv::imwrite("images/save_image.jpg",img);

4. 使用Opencv 处理视频

  • 处理本地视频:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{//open the video file from PCVideoCapture cap("images/rhinos.avi");// if not success, exit programif (cap.isOpened() == false){cout << "Cannot open the video file" << endl;return -1;}cout << "Press Q to Quit" << endl;String win_name = "First Video";namedWindow(win_name);while (true){Mat frame;// read a framebool flag = cap.read(frame);//Breaking the while loop at the end of the videoif (flag == false){break;}//display the frame imshow(win_name, frame);//Wait for 100 ms and key 'q' for exitif (waitKey(100) == 'q'){break;}}destroyWindow(win_name);return 0;
}
  • 处理网络相机:
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char* argv[])
{//open the WebcamVideoCapture cap(0); // if not success, exit programif (cap.isOpened() == false)  {cout << "Cannot open Webcam" << endl;return -1;}//get the frames rate of the videodouble fps = cap.get(CAP_PROP_FPS); cout << "Frames per seconds : " << fps << endl;
cout<<"Press Q to Quit" <<endl;String win_name = "Webcam Video";namedWindow(win_name); //create a windowwhile (true){Mat frame;bool flag = cap.read(frame); // read a new frame from video //show the frame in the created windowimshow(win_name, frame);if (waitKey(1) == 'q'){break;}}
return 0;
}
  • 保存视频:
size frame_size(640,640);
int frame_per_second = 30;
Videowriter v_writer("image/video.avi",Videowriter::fourcc('M','J','P','G'),frames_per_second,frame_size,true)
v_writer.write(frame);
v_writer.release();

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

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

相关文章

sharePoint-基于sharepoint列表中的其他列值自动更新值列

首先进入网站&#xff0c;点击网站内容 点击想要操作的数据表后面的按钮&#xff0c;点击设置 点击创建栏 填写栏名&#xff0c;类型选择计算值&#xff0c;公式用于对列表或库中的值执行计算&#xff0c;然后点击右下角的确定就添加成功了 公式参考&#xff1a; 公式SharePoi…

android studio通过WiFi无线调试安卓手机APP(至少需要Android 11)

要在手机上启用Wireless Debugging&#xff08;无线调试&#xff09;&#xff0c;你可以按照以下步骤进行操作&#xff08;这里以Android 11或更高版本为例&#xff09;&#xff1a; 确保设备连接到Wi-Fi网络&#xff1a; 确保你的Android设备和你的开发机器&#xff08;运行…

Windows系统下制作Windows 11系统U盘启动及安装指导

Windows系统下制作Windows 11系统U盘启动及安装指导 一、准备工作 U盘不得小于8G(推荐使用usb3.0接口)&#xff1b;下载好对应的系统镜像&#xff1b;下载RUFUS或者软通碟U盘制作启动软件&#xff1b; 二、Windows操作系统下制作U盘启动&#xff08;这里以使用RUFUS软件为例&…

Chromium 开发指南2024 Mac篇-安装和配置depot_tools工具(三)

1.引言 在前两篇指南中&#xff0c;我们详细介绍了在 macOS 环境下编译 Chromium 所需的硬件要求和系统依赖&#xff0c;并具体讲解了如何正确安装和配置 Xcode。通过这些步骤&#xff0c;您已经为编译 Chromium 打下了坚实的基础。然而&#xff0c;编译 Chromium 还需要配置一…

电路分析期末总结笔记上

电流&#xff0c;电压定义及单位 电流&#xff08;Current&#xff09; 的定义是单位时间内通过导体横截面的电荷量。 电压&#xff08;Voltage&#xff09;&#xff0c;又称作电势差或电位差&#xff0c;是衡量单位电荷在静电场中由于电势不同而产生的能量差的物理量。 参考…

如何将Postman API测试转换为JMeter以进行扩展

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…

Apache Royale

Apache Royale 顶级项目 Apache Royale 之前adobe的flex&#xff0c;由于浏览器flash&#xff0c;安全沙箱问题&#xff0c;逐步退出市场&#xff0c;当年flex也就是AS3&#xff0c;浏览器统一兼容问题又停止了。 接着要说明一点&#xff0c;HTML5的自适应是在flex之后&#x…

shell编程中的运算符的讲解

在Linux操作系统中也可以使用expr来进行一些数值的运算&#xff0c;expr接受表达式作为参数&#xff0c;并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境&#xff0c;expr 仍然是一个可行的选择。 如上图所示&#xff0c;是使用变量sum来承接加和…

技术点梳理0618

ann建库&#xff0c;分布式建库&#xff0c;性能优化&#xff0c;precision recall参数优化 hnsw&#xff0c;图索引 1. build a&#xff09;确定层&#xff1a;类似跳表思路建立多层&#xff0c;对每一个插入的节点&#xff0c;random层号l&#xff0c;从图的起始点search_…

文献学习——PWM - PFM模式无缝转换的PFC变换器统一控制

PWM - PFM模式无缝转换的PFC变换器统一控制 摘要&#xff1a;断续导通模式通常应用在升压功率因数校正转换器中。这篇文章提出了一种基于虚拟阻抗原理的实现脉冲宽度调制控制和脉冲频率调制控制的统一控制方法。控制模式可以简单的通过只调整一个控制参数来改变。因此&#xf…

A44 STM32_HAL库函数 之SD通用驱动 --B -- 所有函数的介绍及使用

A44 STM32_HAL库函数 之SD通用驱动 --B -- 所有函数的介绍及使用 1 该驱动函数预览1.11 HAL_SD_WriteBlocks_DMA1.12 HAL_SD_Erase1.13 HAL_SD_IRQHandler1.14 HAL_SD_GetState1.15 HAL_SD_GetError1.16 HAL_SD_TxCpltCallback1.17 HAL_SD_RxCpltCallback1.18 HAL_SD_ErrorCall…

Codeforces Round 946 (Div. 3) E. Money Buys Happiness

m m m个月&#xff0c;每个月月底发 x x x的薪水&#xff0c;也就是第 i i i个月只能用前 i − 1 i-1 i−1个月挣的钱&#xff0c;而不能用这个月挣的钱。第 i i i个月花费 c [ i ] c[i] c[i]的薪水能获得 h [ i ] h[i] h[i]的快乐度&#xff0c;问最多能获取的快乐度是多少。 …

第十一章:接口

接口 文章目录 接口一、简介1.1 接口是什么1.2 接口的作用1.3 接口的开发与调用1.4 接口的组成 二、RESTful API三、json-server四、接口测试工具五、接口的创建 一、简介 1.1 接口是什么 接口是前后端通信的桥梁 简单理解&#xff1a;一个接口就是 服务中的一个路由规则&am…

Mybatis数据存在则更新,不存在则插入

系列文章目录 文章目录 系列文章目录一、参考链接1.参考链接2.百度AI 二、使用步骤1.引入库2.读入数据 总结 一、参考链接 1.参考链接 Mybatis - 常用 SQL 语句设计思路及具体实现 - 数据存在则更新&#xff0c;不存在则插入、批量更新、批量插入、连表查询 - 字段加减法 2…

代码随想录算法训练营第四十二天 | 1049.最后一块石头的重量II、494.目标和、474.一和零

1049.最后一块石头的重量II 题目链接&#xff1a;https://leetcode.cn/problems/last-stone-weight-ii/ 文档讲解&#xff1a;https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7… 视频讲解&#xff1a;https://www.bilibili.com/vi…

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…

碳课堂 | 手把手教你申报CBAM

CBAM全称为 Carbon Border Adjustment Mechanism&#xff0c;也被称作“碳关税”或“碳边境调节机制”&#xff0c;是指在实施国内严格气候政策的基础上&#xff0c;要求进口或出口的高碳产品缴纳或退还相应的税费或碳配额。目前&#xff0c;由于欧盟碳边境调节机制是全球第一个…

2244. 完成所有任务需要的最少轮数

2244. 完成所有任务需要的最少轮数 题目链接&#xff1a;2244. 完成所有任务需要的最少轮数 代码如下&#xff1a; class Solution { public:int minimumRounds(vector<int>& tasks) {unordered_map<int,int> um;for(int i0;i<tasks.size();i)//统计各个…

数据结构——顺序表的实现

数据结构——顺序表的实现 一 关于顺序表的简单知识二 动态顺序表 一 关于顺序表的简单知识 1.顺序表的底层结构是数组&#xff0c;在数组的基础上增加了增&#xff0c;删&#xff0c;查&#xff0c;改等方法。 2.顺序表的分类&#xff1a;静态顺序表和动态顺序表 静态顺序表的…

Leaflet地图实例

ReactTypeScript实例&#xff1a; import React, { useEffect, useRef } from "react"; import * as L from "leaflet"; import "leaflet/dist/leaflet.css";const App: React.FC () > {const mapRef useRef<HTMLDivElement>(null);…