pychon/PIL/opencv/json学习过程中遇到的问题
1. 使用PIL.Image读取图片
注意:pytorch中对图像预处理是transforms的输入必须是PIL格式的文件,使用cv2读取的图片就按照第二条的代码处理(3通道合并、归一化处理)
from PIL import Image
img = Image.open("test1.jpg")读取图像
img.show()展示图片
print(img.size)查看图像是255*255大小的数据,每个像素点是0-1的值。而cv2读出每个像素点为0-255.
如果进行FasterRCNN推理:
net=torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)transform = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])])img = Image.open("test1.jpg")img_t = transform(img)#裁剪及转换为张量batch_t = torch.unsqueeze(img_t,0)net.eval()out2=net(batch_t)
2.使用opencv读取图片
src_img=cv2.imread("test1.jpg")#读取图片
cv2.imshow("result",src_img)#显示图片
print(src_img.shape)#可查看大小为(255,255,3)此时cv2读取的图像格式为BGR,且每个像素点的值为0-255,需要使用 cv2.cvtColor(img,cv2.COLOR_BGR2RGB)转换为RGB格式
import cv2
import torch
import torchvision
import numpy as np
from PIL import Image
import PIL
from matplotlib import pyplot as plt
from torchvision import transformsnet=torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
net.eval()
src_img=cv2.imread("test1.jpg")
img = cv2.cvtColor(src_img,cv2.COLOR_BGR2RGB)
img_tensor = torch.from_numpy(img/255.).permute(2,0,1).float()
input=[]
input.append(img_tensor)
out2=net(input)
boxes=out2[0]['boxes']
labels=out2[0]['labels']
scores=out2[0]['scores']
boxes=boxes.detach().numpy()
boxes=np.array(boxes,np.uint8)
for idx in range(boxes.shape[0]):if scores[idx] >= 0.95:x1,y1,x2,y2=boxes[idx][0],boxes[idx][1],boxes[idx][2],boxes[idx][3]cv2.rectangle(src_img,(x1,y1),(x2,y2),(0,255,0),thickness=2)cv2.imshow("result",src_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.PIL和cv2图片相互转换:
img_pil=Image.fromarray(cv2.cvtColor(img_cv,cv2.COLOR_BGR2RGB))
img_cv=cv2.cvtColor(np.asarray(img_pil),cv2.COLOR_RGB2BGR)
Image读取的图片使用cv2显示:
img = Image.open("test1.jpg")
print(img.size)#(255,255)
cv2img=np.array(img.convert('RGB'))#转换为RGB格式
print(cv2img.shape)#(255,255,3)
cv2img=cv2.cvtColor(cv2img, cv2.COLOR_RGB2BGR)#cv2需要BGR格式图片
cv2.imshow("result",cv2img)#可正常展示
4.使用json保存读取文件,coco数据集为91类别,voc为21个类别
从txt文件加载字符串保存为json格式:

coco_classes.json:

代码:
import json
coco_class_path="./coco_classes.txt"#txt文件每行为一个数据如: 1 person前面为字典关键字key,person为字典value
jsondata={}#json文件是字典结构,用于存放数据
with open(coco_class_path,'r') as coco:for line in coco.readlines():#遍历txt文件每行字符串line=line.strip().split()#strip()去除两边控空字符,split()以空格分割字符串if len(line)>2:print(line[0],line[1],line[2])jsondata[line[0]] = line[1]+' '+line[2]#有些value为两个单词else:jsondata[line[0]] = line[1]with open('coco_classes.json','w') as coco:#写入json文件json.dump(jsondata,coco)with open('coco_classes.json','r') as coco:#从json文件读出readjson=json.load(coco)print(readjson)
相关文章:
pychon/PIL/opencv/json学习过程中遇到的问题
1. 使用PIL.Image读取图片 注意:pytorch中对图像预处理是transforms的输入必须是PIL格式的文件,使用cv2读取的图片就按照第二条的代码处理(3通道合并、归一化处理) from PIL import Image img Image.open("test1.jpg"…...
YOLO目标检测——番茄数据集下载分享【含对应voc、coco和yolo三种格式标签】
实际项目应用:番茄检测数据集说明:番茄目标检测数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)和yolo(txt)三种格式标签…...
(JAVA)线程
线程的创建 方式一:Thread public class dome {public static void main(String[] args) {MyThread myThread new MyThread();myThread.start();for(int i1;i<5;i){System.out.println("主线程"i);}} }public class MyThread extends Thread{Overri…...
【深度学习环境】windows安装 NVIDIA Docker
摘要 不要安装 Docker Desktop!我们将在 Ubuntu 中自行安装 Docker。 请安装 Windows 10 Insider Build 或 Windows 11 (Beta也行)。(稳定发行版无法在 WSL 2 中使用 GPU) 请安装 WSL 2 w/Ubuntu 20.04 或同等版本。…...
【微信小程序】自定义组件(三)
自定义组件 插槽1、什么是插槽2、单个插槽3、定义多个插槽 父子组件之间的通信1、父子组件之间的通信的3种方式2、事件绑定3、behaviors 插槽 1、什么是插槽 在自定义组件的wxml结构中,可以提供一个<solot> 节点(插槽),用…...
Python语言:经典案例分析讲解2
例题1:文件的操作 例题2:调用函数求偶数之和 例题3:调用函数并使用递归的方法求斐波那契数前N项之和 题1: 以只写的模式打开文件test.txt,写入"Python",关闭文件。 代码如下: f open("E:/…...
dbeaver连接别人的数据库没有表
1.概念 非缺省的数据库: 通常是指在一个数据库管理系统(DBMS)中,除了系统默认创建的数据库之外的其他用户创建或自定义的数据库。许多数据库系统在安装后会创建一个默认数据库,例如MySQL中的mysql数据库,…...
EXIT(1)
EXTI介绍 EXTI是片上外设 NVIC是cpu内的外设 回忆起之前的GPIO和AFIO 我们是如何检测按键按下的 我们是一直用while循环读取IDR寄存器的对应位置的值 一直检测判断按键是否被按下 那么是否有第二种方式检测按键是否被按下了呢? 通过EXTI 当EXTI检测到按键的电平发生…...
Qt信号量用于对共享资源进行同步
定义信号量与缓冲区: const int BufferSize 8; int buffer1[BufferSize]; int buffer2[BufferSize]; int curBuf1; //当前正在写入的Bufferint bufNo0; //采集的缓冲区序号quint8 counter0;//数据生成器QSemaphore emptyBufs(2);//信号量:空的缓冲区…...
在报错中学python something
这里写目录标题 动手学深度学习pandas完整代码数据处理TypeError: can only concatenate str (not "int") to str(fillna填补缺失值) 创建文件夹学习这个数据分组get_dummies实现one hot encode 动手学深度学习pandas完整代码 import osimpor…...
如何调用 DBMS_DISKGROUP 对 ASM 文件进行随机读取
目录 一、概述 二、实现思路与注意点 三、Java Demo 1、直接调用 2、读写异步 一、概述 对于 Oracle Rac 环境下,数据文件大多默认存放在 ASM 共享存储上,当我们需要读取 ASM 上存储的数据文件时可以使用 Oracle 提供的一些方法,比如 ASMCMD CP。但是,对于一些备份场景…...
UART学习
uart.c #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h" // UART4_TX : PG11 AF6 // UART4_RX : PB2 AF8 void __uart_init() {// GPIOB2 设置为复用功能GPIOB->MODER & (~(0x3 << 4));GPIOB->MODER | (0x2 << 4);G…...
洗地机哪个牌子最好用?洗地机品牌排行榜
近年来,洗地机相当热门,洗地机结合了扫地拖地吸地为一体的多功能清洁工具,让我们告别了传统方式打扫卫生,让我们清洁不再费劲,可是市面上的洗地机五花八门,怎么挑选到一个洗地机也是一个问题,下…...
国际阿里云:Windows实例中数据恢复教程!!!
在处理磁盘相关问题时,您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法,同时提供了使用云盘的常见误区以及最佳实践,避免可能的数据丢失风险。 前提条件 已注册阿里云账…...
浅谈二叉树
✏️✏️✏️今天给大家分享一下二叉树的基本概念以及性质、二叉树的自定义实现,二叉树的遍历等。 清风的CSDN博客 😛😛😛希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流&…...
(二) 用QWebSocket 实现服务端和客户端(详细代码直接使用)
目录 前言 一、服务器的代码: 1、服务器的思路 2、具体服务器的代码示例 二、客户端的代码: 1、客户端的思路(和服务器类似) 2、具体客户端的代码示例 前言 要是想了解QWebSocket的详细知识,还得移步到上一篇文…...
关于我在配置zookeeper出现,启动成功,进程存在,但是查看状态却没有出现Mode:xxxxx的问题和我的解决方案
在我输入:zkServer.sh status 之后出现报错码. 报错码: ZooKeeper JMX enabled by default Using config: /opt/software/zookeeper/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost. Error contacting service. It is probably not runni…...
react及相关面试问题汇总
目录 1、什么是React?它的特点是什么? 2、解释一下虚拟DOM(Virtual DOM)的概念以及它的工作原理。 3、什么是组件(Component)?如何定义一个React组件? 4、什么是JSX?它与HTML的区别是什么?如何在React中…...
QT4到QT5移植出现的一些问题
转自:QT4到QT5移植出现的一些问题_西门子3gl qt5 许可证-CSDN博客 在上述作者基础上修改: 一、问题1:头文件的问题 1、QtGui/QApplication: No such file or directory 1.1错因 原因是Qt5源文件位置的改动 1.2解决 pro文件里࿰…...
【可解释AI】Alibi explain: 解释机器学习模型的算法
Alibi explain: 解释机器学习模型的算法 可解释人工智能简介Alibi特点算法Library设计展望参考资料 今天介绍Alibi Explain,一个开源Python库,用于解释机器学习模型的预测(https://github.com/SeldonIO/alibi)。该库具有最先进的分类和回归模型可解释性算…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
