VC++开发遥感图像处理软件及小波变换应用

版权申诉
0 下载量 152 浏览量 更新于2024-10-16 收藏 9.81MB RAR 举报
资源摘要信息:"该资源是一套使用VC++语言开发的遥感图像处理软件,能够执行包括图像预处理、超大图像显示、图像腐蚀膨胀和图像镶嵌等操作。软件的关键技术包括小波变换,这使得它在遥感图像处理领域具有突出的应用价值。" 在详细解释该资源时,我们可以从标题、描述和标签中提炼出以下知识点: 1. VC++开发环境:Visual C++是微软公司推出的一个集成开发环境(IDE),用于C++语言的开发。它是Visual Studio的一部分,广泛用于软件开发,尤其在系统程序和高性能应用中。 2. 遥感图像处理:遥感是指从远距离感知目标物并获取其信息的技术。在图像处理领域,遥感图像处理主要是指通过计算机对遥感获取的图像数据进行分析、处理和解释,以提取有用信息的过程。 3. 预处理:图像预处理是图像处理中的一个重要步骤,包括去除噪声、图像增强、校正等。预处理可以改善图像质量,使其更适合后续分析处理。 4. 超大图像显示:在处理遥感图像时,常常会遇到图像尺寸非常大的情况。因此,需要特殊的算法和技术来有效地显示这些大尺寸图像。 5. 图像腐蚀膨胀:腐蚀和膨胀是形态学图像处理中的基本操作。它们通常用于图像中的细节突出、去除噪声、分割图像等。腐蚀可以用来消除小物体,膨胀则用于填补小洞。 6. 图像镶嵌:图像镶嵌是指将多个重叠图像拼接成一个大场景图像的过程。这在遥感领域尤为重要,因为单张图像往往无法覆盖整个感兴趣区域。 7. 小波变换:小波变换是一种数学变换,用于信号分析和图像处理。它能够提供多尺度、时频分析的能力,特别适用于处理非平稳信号和图像。小波变换在图像去噪、压缩、特征提取等方面有广泛应用。 8. 软件功能:根据描述,这套软件能够执行遥感图像处理中的多项任务,显示了它在图像处理方面的多功能性和实用性。 9. 软件名称“hwc”:尽管文件列表中只有一个名称“hwc”,这可能是指软件的项目名或者简称,表明了软件的身份标识。 结合上述知识点,我们可以看到该软件的核心功能涵盖了遥感图像处理的一系列重要技术,特别突出了小波变换的应用,这使得它在分析和处理遥感数据时具有更高的精确度和效率。此外,通过VC++开发该软件保证了性能的优化和高效性,这对于处理大型图像数据集尤其重要。这套软件对于科研人员、工程师在遥感领域的研究和开发工作将提供极大的帮助。

def unzip_infer_data(src_path,target_path): ''' 解压预测数据集 ''' if(not os.path.isdir(target_path)): z = zipfile.ZipFile(src_path, 'r') z.extractall(path=target_path) z.close() def load_image(img_path): ''' 预测图片预处理 ''' img = Image.open(img_path) if img.mode != 'RGB': img = img.convert('RGB') img = img.resize((224, 224), Image.BILINEAR) img = np.array(img).astype('float32') img = img.transpose((2, 0, 1)) # HWC to CHW img = img/255 # 像素值归一化 return img infer_src_path = '/home/aistudio/data/data55032/archive_test.zip' infer_dst_path = '/home/aistudio/data/archive_test' unzip_infer_data(infer_src_path,infer_dst_path) para_state_dict = paddle.load("MyCNN") model = MyCNN() model.set_state_dict(para_state_dict) #加载模型参数 model.eval() #验证模式 #展示预测图片 infer_path='data/archive_test/alexandrite_6.jpg' img = Image.open(infer_path) plt.imshow(img) #根据数组绘制图像 plt.show() #显示图像 #对预测图片进行预处理 infer_imgs = [] infer_imgs.append(load_image(infer_path)) infer_imgs = np.array(infer_imgs) label_dic = train_parameters['label_dict'] for i in range(len(infer_imgs)): data = infer_imgs[i] dy_x_data = np.array(data).astype('float32') dy_x_data=dy_x_data[np.newaxis,:, : ,:] img = paddle.to_tensor (dy_x_data) out = model(img) lab = np.argmax(out.numpy()) #argmax():返回最大数的索引 print("第{}个样本,被预测为:{},真实标签为:{}".format(i+1,label_dic[str(lab)],infer_path.split('/')[-1].split("_")[0])) print("结束") 以上代码进行DNN预测,根据这段代码写一段续写一段利用这个模型进行宝石预测的GUI界面,其中包含预测结果是否正确的判断功能

2023-05-25 上传

import torch from djitellopy import Tello import cv2 import numpy as np import models from models import yolo def get_model(): # 假设 'yolov5s.yaml' 是 yolov5s 模型的定义文件的路径 model = models.yolo.Model('models/yolov5s.yaml') checkpoint = torch.load('weights/yolov5s.pt') model.load_state_dict(checkpoint['model']) model.eval() return model def preprocess_frame(img): img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.resize(img, (640, 640)) # 将图像大小调整为模型的输入大小 img = img / 255.0 # 将像素值归一化到 [0, 1] img = np.transpose(img, (2, 0, 1)) # 将图像从 HWC 格式转换为 CHW 格式 img = torch.from_numpy(img).float() # 将 Numpy 数组转换为 PyTorch 张量 img = img.unsqueeze(0) # 增加一个批量维度 return img def process_frame(model, img): img_preprocessed = preprocess_frame(img) results = model(img_preprocessed) # 处理模型的输出 results = results[0].detach().cpu().numpy() # 将结果从 GPU 移动到 CPU 并转换为 Numpy 数组 for x1, y1, x2, y2, conf, cls in results: # 将坐标从 [0, 1] 范围转换回图像的像素坐标 x1, y1, x2, y2 = x1 * img.shape[1], y1 * img.shape[0], x2 * img.shape[1], y2 * img.shape[0] # 在图像上画出边界框 cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2) # 在边界框旁边显示类别和置信度 cv2.putText(img, f'{int(cls)} {conf:.2f}', (int(x1), int(y1) - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # 显示图像 cv2.imshow('Tello with YOLOv5', img) return cv2.waitKey(1) def main(): tello = Tello() tello.connect() tello.streamon() frame_read = tello.get_frame_read() model = get_model() frame_skip = 2 # 每两帧处理一次 counter = 0 while True: if counter % frame_skip == 0: # 只处理每两帧中的一帧 img = frame_read.frame process_frame(model, img) counter += 1 cv2.destroyAllWindows() if __name__ == '__main__': main() 修改这段代码

2023-05-24 上传