下载地址:

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 基本操作相关推荐

  1. 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 添加文字 ...

  2. opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)

    opencv基本操作二 要点 代码 例程一 例程二 要点 opencv常用读视频函数 cv2.VideoCapture .cv2.VideoCapture.get 等,可以参考这里 opencv常用写 ...

  3. opencv基本操作一(读取、处理、保存图片)

    opencv基本操作一 重要函数&概念 代码 例程一 例程二 重要函数&概念 cv2.resize()的用法见:https://blog.csdn.net/qq_41339539/ar ...

  4. 【自我提升】openCV基本操作

    写在前面:本篇博客主要是记录opnecv的基本操作,不记录安装等步骤.方便回顾和查找方法. 一.图像的IO操作,读取和保存方法 读取图像 在OpenCV中,读取图像的函数是imread().该函数可以 ...

  5. CV之路——opencv基本操作

    目的 分享学习心得,从实操中学习图像的前处理.代码直接跑,什么都不用改,如果网址失效,直接换网址即可. 库 - imageio==2.6.0 用来读取网址图片 - cv2==3.2.14 图像操作 - ...

  6. OpenCV入门系列1:图像组成与OpenCV基本操作函数

    文章目录 前言 一.图像组成 1.1 图片与像素点 1.2 RGB颜色系统 1.3 图像数值转换原理 1.4 彩色图与灰度图 二.OpenCV函数验证 2.1 引入OpenCV库 2.2 读入彩色图片 ...

  7. opencv基本操作入门指南 (代码 + 讲解 + 边缘提取示例 + 调取摄像头demo)

    这篇博文面向所有使用python版本的opencv的开发者,本人入门的时候硬读文档根本不知道如何下手.浪费了很多的时间,希望各位后辈们入行的时候能够轻松一些,把示例写的详细简单,代码基本上都是开盖即用 ...

  8. 初学opencv/基本操作

    #coding:utf-8 """ 基本操作 """ import numpy as np import cv2 import matplo ...

  9. OpenCV基本操作

    IO操作: img=cv.imread('preview.jpg',0) cv.imshow('img',img) cv.waitKey(0) cv.destroyAllWindows() # 一种奇 ...

最新文章

  1. 订阅点评有奖,本人获奖了
  2. python识别文字并且提示_python脚本:检测字符串标识符
  3. [置顶]C#执行Excel宏模版的方法
  4. scrapy爬虫框架windows下的安装问题
  5. mysql联合子查询_2020-09-08MySQL多表联合查询之子查询
  6. 【转】Linux ln(link) 命令详解
  7. 帮助文档的制作(控制台、eclipse两种方式)
  8. MVC4 下DropDownList使用方法
  9. 适用于openvino 2020.2的yolov5的docker制作
  10. 设计模式--spring源码中使用策略模式(Strategy Pattern)
  11. redis安装配置参考
  12. 独家!337页大数据与建模核心资料,免费领取!
  13. PIX525-IPSEC-×××配置
  14. [渝粤教育] 云南大学 中国文化英语桥 参考 资料
  15. Swift - as、as!、as?三种类型转换操作使用一览
  16. STC学习:看谁手速快
  17. Oracle开发实战经典教程(教学视频)
  18. 史上最全最简洁的网络传输协议介绍
  19. QT使用ODBC连接MySQL
  20. python中水量_Python居然还能用于巨大的工程项目!比如三峡发电量估算系统!

热门文章

  1. CPA、CPS、CPM、CPT、CPC 是什么
  2. web渗透测试 靶机系统 漏洞测试环境
  3. VMware(VMDebugger)导致VS2010启动慢的解决办法
  4. 读《Linux内核设计与实现》我想到了这些书
  5. Android--相机预览及拍照临时文件/SurfaceView
  6. Android--SensorEventListener和AudioManager实现根据条件转换手机震动和响铃
  7. oracle表行列权限,Oracle行列互换 横表和纵表
  8. php自定义扩展函数,Laravel框架中扩展函数、扩展自定义类的方法
  9. linux查看ssh端口8222,下载服务器SSH被用户恶意猜密码了
  10. python中调用函数时必须有实参_Python之函数(一)定义函数以及传参