OpenCV

Win10+libtorch1.1+opencv 笔记

不打扰是莪最后的温柔 提交于 2020-11-12 09:50:27
这几天刚刚把libtorch加载模型弄明白,记录一下。 1、正确安装VS2017+opencv+cmake +pytorch 1.1 2、官网下载libtorch cpu 1.1版本(注意pytorch与libtorch版本一致) 3、pytorch 导出模型 import torch from torchvision import models model = models.resnet18() #导入已经训练好的模型 #state = torch.load('latest.pt') #model.load_state_dict(state['model_state_dict'], strict=True) #注意模型输入的尺寸 example = torch.rand(1, 3, 224, 224) model = model.eval() traced_script_module = torch.jit.trace(model, example) output = traced_script_module(torch.ones(1,3,224,224)) traced_script_module.save("model.pt") 4、cmake 编写 cmake_minimum_required(VERSION 3.14 FATAL_ERROR) project(custom

【pytorch报错解决】expected input to have 3 channels, but got 1 channels instead

大城市里の小女人 提交于 2020-11-11 15:08:51
遇到的问题 数据是png图像的时候,如果用PIL读取图像,获得的是单通道的,不是多通道的。虽然使用opencv读取图片可以获得三通道图像数据,如下: def __getitem__(self, idx): image_root = self.train_image_file_paths[idx] image_name = image_root.split(os.path.sep)[-1] image = cv.imread(image_root) if self.transform is not None: image = self.transform(image) label = ohe.encode(image_name.split('_')[0]) return image, label 但是会出现报错: TypeError: img should be PIL Image. Got <class 'numpy.ndarray'> File "c:/Users/pprp/Desktop/pytorch-captcha-recognition-master/captcha_train.py", line 77, in <module> main(args) File "c:/Users/pprp/Desktop/pytorch-captcha-recognition

[Python图像处理] 三十.图像量化及采样处理万字详细总结(推荐)

被刻印的时光 ゝ 提交于 2020-11-11 07:52:42
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~ 前面一篇文章介绍了MoviePy视频编辑库,实现视频的自定义剪切和合并操作;这篇文章将详细讲解图像量化及采样处理,万字长文吐血整理。同时,该部分知识均为秀璋查阅资料撰写整理,并且开设成了收费专栏,为小宝赚点奶粉钱。当然如果您是学生或者经济拮据,可以私聊我给你每篇文章开白名单,或者转发原文给你,更多的是希望您心甘情愿的打赏及进步。一起加油喔~ 该系列在github所有源代码: https://github.com/eastmountyxz/ImageProcessing-Python 前文参考: [Python图像处理] 一.图像处理基础知识及OpenCV入门函数 [Python图像处理] 二.OpenCV+Numpy库读取与修改像素 [Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理 [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波 [Python图像处理] 五.图像融合、加法运算及图像类型转换 [Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移

图像验证码识别(八)——字符归一化

蓝咒 提交于 2020-11-10 01:43:46
前面提到了将验证码上的字符分割成一个单独的字符图片并且保存,但是扣下来的字符串可能会有倾斜的现象,因为现在很多网页验证码为了防止破解都对字符进行了一定的扭曲和旋转,即使是同一个网站的验证码,每个相同的字符很有可能都是不一样的,所以为了提高识别的正确率,在这里最好能让每次进行训练的字符能够保持同一个角度。所以首先需要做的就是旋转倾斜。 一、旋转倾斜 旋转倾斜的目的就是要提高识别的正确率,如果字符‘A’的模板是标准的,让一个横着的‘A’去训练肯定得不到正确的结果。不过怎么旋转呢?想要将每个字符都旋转到印刷体的角度那是很难的,也是不必要的,在这里采用的思想就是每次都旋转成为“最瘦的”。每次分割出来一个字符不管是横着的还是竖着的,都可以回到“最瘦”的角度。具体做法就是利用OpenCV的旋转函数. [cpp] view plain copy cv::Mat M = cv::getRotationMatrix2D(center, angle, scale); getRotationMatrix2D这个函数所做的就是计算旋转矩阵,熟悉计算机图形学的都知道,图形在做各种变换的时候都是在原有的矩阵上乘以变换矩阵。这里center是CvPoint2D32f类型的结构体,其有两个float类型的变量分别表示要旋转的图像的宽和高,angle就是要旋转的角度,scale是旋转后的缩放系数