c++ opencv 基本操作
下载地址:
https://opencv.org/releases/
归一化,转vector:
Opencv C++ 归一化_jacke121的专栏-CSDN博客_c++ opencv 归一化
c++ 贴图:
opencv c++ 贴图_jacke121的专栏-CSDN博客
c++ transpose:
nanodet onnx踩坑记录_jacke121的专栏-CSDN博客
目录
通道转换
创建图片,rect贴图,读取rect
矩形框:
读取字符串,resize
最大值,最小值
乘法
除法
转flost32类型
打印类型
打印输出
float*内存拷贝
遍历图片
通道转换
c++ opencv 通道转换_jacke121的专栏-CSDN博客_c++通道
创建图片,rect贴图,读取rect
int width = 360;int height = 30;int width_crop = 180;cv::Mat img(height, width, CV_8UC3, cv::Scalar(0, 0, 255));cv::Mat img2(height, width_crop, CV_8UC3, cv::Scalar(0,255, 0));cv::Rect rect(0, 0, width_crop, height);cv::Mat imageROI = img(rect);img2.copyTo(imageROI, img2);cv::imshow("result", img);cv::waitKey(0);
读取rect
float aaa = r.rect.x;float bbb = r.rect.y;float ccc = r.rect.width;float ddd = r.rect.height;std::cout << "aaa " << aaa << " bbb:" << bbb<< " ccc:" << ccc << " ddd:" << ddd << std::endl;
矩形框:
int x = 50;
int y = 50;
int width = 50;
int height = 50;
cv::Rect rect(x, y, width, height);cv::rectangle(matImage,Rect(100,300,20,200),Scalar(0,0,255),1,1,0);
读取字符串,resize
cv::Mat row_img = cv::imread(R"(G:\rgb/000000.jpg)");int iw = row_img.cols;int ih = row_img.rows;cv::Mat image;cv::resize(row_img, image,cv::Size(INPUT_SIZE,INPUT_SIZE));cv::Mat dst = cv::Mat::zeros(row_img.size(), CV_32FC3);row_img.convertTo(dst, CV_32FC3);// , 10, -1);dst = dst - 128.0;dst = dst / 128.0;std::cout << dst.type() << std::endl;for (int a = 0; a < 20; a++) {//cout << (dst.data)[a] << " ";cout << ((float*)(dst.data))[a] << " ";}
最大值,最小值
opencv4可以多通道计算,opencv3.4只能计算单通道图像。
Mat image1, image3;image1 = imread("D:\\zhengjian.jpg");if (!image1.data){return 0;}double minv = 0.0, maxv = 0.0;minMaxIdx(image1, &minv, &maxv);cout << "Mat minv = " << minv << endl;cout << "Mat maxv = " << maxv << endl;//归一化image_new = (image_new - minVal) / (maxVal - minVal)*255;//转化类型Mat dst = Mat::zeros(image_new.size(), CV_8U);image_new.convertTo(dst, CV_8U);// , NULL, 0);//image_new.convertTo(image_new, CV_8U, 255.0 / (maxVal - minVal), 0);
//建立空的黑图
Mat atom_image = Mat::zeros(w, w, CV_8UC3);
乘法
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<vector>
#include<iostream>using namespace std;
using namespace cv;int main()
{Mat image1, image2, image3;image1 = imread("C:\\Users\\Dell\\Desktop\\5.jpg");if (!image1.data){return 0;}image2 = imread("C:\\Users\\Dell\\Desktop\\4.jpg");if (!image2.data){return 0;}resize(image2, image3, image1.size());namedWindow("Image 1");imshow("Image 1", image1);namedWindow("Image 3");imshow("Image 3", image3);Mat result;image3 = image3 * 0.3;image1 = image1 * 0.9;add(image1, image3, result);namedWindow("result");imshow("result", result);waitKey(0);return 0;
}
除法
Mat result1;imshow("result_o", image1);image1 = image1 / 2;imshow("result", image1);
转flost32类型
cv::Mat image0 = cv::imread("../configs/bus.jpg", cv::IMREAD_UNCHANGED);cv::Mat dst = cv::Mat::zeros(image0.size(), CV_32FC3);image0.convertTo(dst, CV_32FC3);// , 10, -1);
打印类型
以下内容转自:
Package | OpenCV C++ cv::Mat 数据类型type对应的输出值_iLOVEJohnny的博客-CSDN博客_opencv 输出mat数据类型
std::cout << img.type() << std::endl;
id对应数据类型:
+--------+----+----+----+----+------+------+------+------+
| | C1 | C2 | C3 | C4 | C(5) | C(6) | C(7) | C(8) |
+--------+----+----+----+----+------+------+------+------+
| CV_8U | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |
| CV_8S | 1 | 9 | 17 | 25 | 33 | 41 | 49 | 57 |
| CV_16U | 2 | 10 | 18 | 26 | 34 | 42 | 50 | 58 |
| CV_16S | 3 | 11 | 19 | 27 | 35 | 43 | 51 | 59 |
| CV_32S | 4 | 12 | 20 | 28 | 36 | 44 | 52 | 60 |
| CV_32F | 5 | 13 | 21 | 29 | 37 | 45 | 53 | 61 |
| CV_64F | 6 | 14 | 22 | 30 | 38 | 46 | 54 | 62 |
+--------+----+----+----+----+------+------+------+------+
打印输出
注意,每行结尾有 error 标注。
Mat srcResize = imread(imgpath);for (int a = 0; a < 20; a++) {cout << (int)srcimg.at<uchar>(0, a) << " ";// ok intcout << ((float*)(srcimg.data))[a] << " ";//error}cout << "int \n";cv::Mat dst = cv::Mat::zeros(srcResize.size(), CV_32FC3);srcResize.convertTo(dst, CV_32FC3);// , 10, -1);for (int a = 0; a < 20; a++) {cout << (float)dst.at<float>(0, a) << " ";// ok floatcout << ((float*)(dst.data))[a] << " ";// ok float//cout << setprecision(3) << ((float*)(srcimg.data))[a] << " ";}cout << "\n CV_32FC3 \n";for (int a = 0; a < 20; a++) {cout << setprecision(3) << ((double*)(dst.data))[a] << " ";//error}
这个输出错误:
cout << (dst.data)[a] << " ";
float*内存拷贝
转自:memcpy - how to copy float* to float* variable - 鹅要长大 - 博客园
float* seg_segmap = new float[OUTPUT_H * OUTPUT_W];
float* temp = new float[OUTPUT_H * OUTPUT_W];
//memcpy(temp, seg_segmap, sizeof(seg_segmap));//error
memcpy(temp, seg_segmap, OUTPUT_H * OUTPUT_W*sizeof(float));
遍历图片
cv::String path = R"(E:\data\Circle-detection-master\train_repeat\image/)";cv::String dst = "result/";//cv::String GT = "D:/astudy/dataset/circle/temp/GT/";T test_threshold;vector<cv::String> Filenames;cv::glob(path, Filenames);float fmeasureSum = 0.0;float precisionSum = 0.0;float recallSum = 0.0;float timeSum = 0.0;// Detect each image in the directory 'Images1'for (int i = 0; i < Filenames.size(); i++){//read imagescv::String file = Filenames[i];
c++ opencv 基本操作相关推荐
- OpenCV修养(二)——OpenCV基本操作
文章目录 2 OpenCV基本操作 2.1 IO操作 2.2 图像基本操作 2.2.1 图像绘制 2.2.1.1 绘制直线 2.2.1.2 绘制圆形 2.2.1.3 绘制矩形 2.2.1.4 添加文字 ...
- opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)
opencv基本操作二 要点 代码 例程一 例程二 要点 opencv常用读视频函数 cv2.VideoCapture .cv2.VideoCapture.get 等,可以参考这里 opencv常用写 ...
- opencv基本操作一(读取、处理、保存图片)
opencv基本操作一 重要函数&概念 代码 例程一 例程二 重要函数&概念 cv2.resize()的用法见:https://blog.csdn.net/qq_41339539/ar ...
- 【自我提升】openCV基本操作
写在前面:本篇博客主要是记录opnecv的基本操作,不记录安装等步骤.方便回顾和查找方法. 一.图像的IO操作,读取和保存方法 读取图像 在OpenCV中,读取图像的函数是imread().该函数可以 ...
- CV之路——opencv基本操作
目的 分享学习心得,从实操中学习图像的前处理.代码直接跑,什么都不用改,如果网址失效,直接换网址即可. 库 - imageio==2.6.0 用来读取网址图片 - cv2==3.2.14 图像操作 - ...
- OpenCV入门系列1:图像组成与OpenCV基本操作函数
文章目录 前言 一.图像组成 1.1 图片与像素点 1.2 RGB颜色系统 1.3 图像数值转换原理 1.4 彩色图与灰度图 二.OpenCV函数验证 2.1 引入OpenCV库 2.2 读入彩色图片 ...
- opencv基本操作入门指南 (代码 + 讲解 + 边缘提取示例 + 调取摄像头demo)
这篇博文面向所有使用python版本的opencv的开发者,本人入门的时候硬读文档根本不知道如何下手.浪费了很多的时间,希望各位后辈们入行的时候能够轻松一些,把示例写的详细简单,代码基本上都是开盖即用 ...
- 初学opencv/基本操作
#coding:utf-8 """ 基本操作 """ import numpy as np import cv2 import matplo ...
- OpenCV基本操作
IO操作: img=cv.imread('preview.jpg',0) cv.imshow('img',img) cv.waitKey(0) cv.destroyAllWindows() # 一种奇 ...
最新文章
- 订阅点评有奖,本人获奖了
- python识别文字并且提示_python脚本:检测字符串标识符
- [置顶]C#执行Excel宏模版的方法
- scrapy爬虫框架windows下的安装问题
- mysql联合子查询_2020-09-08MySQL多表联合查询之子查询
- 【转】Linux ln(link) 命令详解
- 帮助文档的制作(控制台、eclipse两种方式)
- MVC4 下DropDownList使用方法
- 适用于openvino 2020.2的yolov5的docker制作
- 设计模式--spring源码中使用策略模式(Strategy Pattern)
- redis安装配置参考
- 独家!337页大数据与建模核心资料,免费领取!
- PIX525-IPSEC-×××配置
- [渝粤教育] 云南大学 中国文化英语桥 参考 资料
- Swift - as、as!、as?三种类型转换操作使用一览
- STC学习:看谁手速快
- Oracle开发实战经典教程(教学视频)
- 史上最全最简洁的网络传输协议介绍
- QT使用ODBC连接MySQL
- python中水量_Python居然还能用于巨大的工程项目!比如三峡发电量估算系统!
热门文章
- CPA、CPS、CPM、CPT、CPC 是什么
- web渗透测试 靶机系统 漏洞测试环境
- VMware(VMDebugger)导致VS2010启动慢的解决办法
- 读《Linux内核设计与实现》我想到了这些书
- Android--相机预览及拍照临时文件/SurfaceView
- Android--SensorEventListener和AudioManager实现根据条件转换手机震动和响铃
- oracle表行列权限,Oracle行列互换 横表和纵表
- php自定义扩展函数,Laravel框架中扩展函数、扩展自定义类的方法
- linux查看ssh端口8222,下载服务器SSH被用户恶意猜密码了
- python中调用函数时必须有实参_Python之函数(一)定义函数以及传参