OpenCV图像基本操作
1.图像基本操作之读取、显示和存储图像123456789101112131415161718#include "stdafx.h"#include "opencv.hpp" //引用相关头文件int main(){ cv::Mat img,imgGaussian; //创建图像变量 img = cv::imread("D:/image/lane.bmp", cv::IMREAD_COLOR); //读取图像 if (img.empty()) return -1; //使用cv::Mat类的empty方法判断是否正确读 //取了图像,如果读取失败,则退出程序 int width = img.cols; //获取宽高,图像是二维矩阵,因而可以通过列数与行数,即 int height = img.rows; //cols和rows cv::GaussianBlur(img,imgGaussian,cv:: ...
OpenCV基本数据类型
OpenCV设计了许多种数据类型,让计算机视觉和机器学习任务变得更加简单、直观。OpenCV中的数据类型可分为三大类:
基本数据类型。该类型直接由C++的数据类型(int或float等)组装而来,包括简单的向量和矩阵,以及简单的几何表示,如点、矩形和尺寸等。
辅助对象。这些对象表示更抽象的概念,如垃圾收集指针类等,用于表示切片的范围对象,以及对某些算法终止条件的抽象等。
大型数组类型。该类型包含数组和其他常见的基本数据类型,典型代表是cv::Mat类,用于表示包括任意基本元素的任意维度的数组。cv::Mat类的一个专门用途就是表示及存储图像数据。
1.基本数据类型1.1基本数据类型之cv::Vec类cv::Vec类可用来表示固定长度的向量,是一个模板类,常使用[]来访问Vec向量成员,主要用来存储数值向量。值得注意的是,cv::Vec类在编译时都需要知道变量的长度。
(1)使用cv::Vec类可以定义任意类型的向量:
1234567891011121314151617181920212223242526272829303132cv::Vec<double,3> my ...
opencv4.6.0+cuda+扩展模块编译
1.安装cuda和对应的cudnn显卡驱动版本决定了cuda版本,cuda版本决定cudnn版本,显卡驱动可升级。安装步骤如下:
CUDA驱动安装: 驱动下载地址:https://www.nvidia.cn/Download/Find.aspx?lang=cn ,下载后双击默认安装即可。
CUDA工具包安装:快捷键win+r,输入cmd并回车,输入命令行nvidia-smi,找到对应的CUDA版本 https://developer.nvidia.cn/zh-cn/cuda-toolkit, 下载后双击cuda.exe,然后默认选择即可。
cudnn安装:在nvidia官网下载,下载地址:https://developer.nvidia.cn/rdp/cudnn-download, cudnn要和cuda的版本对应上。下载后解压cudnn,把解压文件复制到cuda安装文件夹C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vxx.x中,或者将解压的cudnn路径添加到环境变量中即可。
测试cuda是否安装成功:
第一种方法 ...
python用PIL库在图像上绘制文字
123456789101112131415from PIL import Imagefrom PIL import ImageFontfrom PIL import ImageDrawfont = ImageFont.truetype("arial.ttf", 36)img = Image.open(imgpath)draw = ImageDraw.Draw(imagebak)text = "result"draw.text((50,50),text,font=font)savepath = "D:\\user\\Projects\\Efficientnet\\efficientNet\\data\\dst.bmp" imagebak.save(savepath)
cpp数据类型转换
C++中有几种常见的数据类型转换,包括:
1.C风格字符串转换为数字类型:
123const char* str = "123";int num = atoi(str); // C风格字符串转整数double dbl = atof(str); // C风格字符串转浮点数
2.数字类型转换为C风格字符串:
12345int num = 123;char str[16];sprintf(str, "%d", num); // 整数转C风格字符串double dbl = 3.14;sprintf(str, "%.2f", dbl); // 浮点数转C风格字符串,保留两位小数
3.C++风格字符串转换:
12345#include <string>std::string str = "hello";const char* cstr = str.c_str(); // C++风格字符串转C风格字符串std::string str2(cstr); // C风格字符串转C++风格字符串
4. ...
python数据类型转换
Python中有几种常用的数据类型转换,包括:
1.字符串转整数或浮点数:
12str_to_int = int("123") # 字符串转整数str_to_float = float("3.14") # 字符串转浮点数
2.整数或浮点数转字符串:
12int_to_str = str(123) # 整数转字符串float_to_str = str(3.14) # 浮点数转字符串
3.列表、元组、集合等序列类型之间的相互转换:
123list_to_tuple = tuple([1, 2, 3]) # 列表转元组tuple_to_list = list((1, 2, 3)) # 元组转列表set_to_list = list({1, 2, 3}) # 集合转列表
4.字符串和列表之间的转换:
12str_to_list = list("hello") # 字符串转列表list_to_str = "".join(['h', 'e' ...
python获取模型推理时间
123456789101112131415161718192021222324import torchimport timefor imgpath in imagepaths: img = Image.open(imgpath) //同步GPU,开始计时 torch.cuda.synchronize() time_start = time.time() img = data_transform(img) img = torch.unsqueeze(img, dim=0) with torch.no_grad(): output = torch.squeeze(model(img.to(device))).cpu() predict = torch.softmax(output, dim=0) predict_cla = torch.argmax(predict).numpy() //同步GPU,结束计时 torch.cuda.synchronize() time_end = ti ...
python获取文件名
要获取Python中路径中的文件名,可以使用os模块中的os.path.basename()函数。这个函数接受一个路径字符串作为输入,并返回该路径中的最后一个组件,即文件名。以下是一个例子:
123456import ospath = "/path/to/file.txt"filename = os.path.basename(path)print(filename) # 输出:file.txt
上面代码将路径字符串传递给os.path.basename()函数,并将返回值存储在变量filename中。然后,使用print()函数来打印文件名。
python读取文件夹中的所有图像及路径
1234567891011121314151617181920212223242526272829import osimport cv2def read_images(folder_path): images = [] for filename in os.listdir(folder_path): img_path = os.path.join(folder_path, filename) if os.path.isfile(img_path): img = cv2.imread(img_path) if img is not None: images.append(img) return imagesdef getfilepaths(folder_path): paths = [] for filename in os.listdir(folder_path): img_path = os.path.join(folder_path, f ...
std命名空间中没有clamp函数
std::clamp()函数接受三个参数:一个值,和两个边界值。它返回在边界范围内的值,如果给定的值在边界之外,它将返回最近的边界。在C++11标准中,确实没有std命名空间中的clamp()函数。不过,C++17标准中增加了这个函数(解决方案,将工程属性的c++语言标准修改为c++17),可以使用<algorithm>头文件来包含它。以下是一个使用clamp()函数的示例代码:
123456789101112#include <iostream>#include <algorithm>int main() { int x = 10; int y = 20; int z = 15; int result = std::clamp(z, x, y); // 15 std::cout << result << std::endl; return 0;}