配置opencv2.4.8与vs2010实现笔记本摄像头视频显示

版权申诉
0 下载量 6 浏览量 更新于2024-11-05 收藏 6.93MB ZIP 举报
资源摘要信息:"该文件标题为'opencv_test.zip_openCVTest_opencv test_opencv2test',描述中提到'配置opencv2.4.8与vs2010并在笔记本电脑上显示摄像头视频'。标签包括'opencvtest'、'opencv_test'和'opencv2test'。压缩包中仅包含一个名为'opencv_test'的文件。以下是从标题、描述和标签中提取的相关知识点。" 知识点: 1. OpenCV基础与版本介绍 - OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它包括了超过2500个优化算法,几乎涵盖了计算机视觉领域内的所有常见任务。 - 在本例中,提及的版本为opencv 2.4.8,这是一个稳定且广泛使用的版本。 2. 环境配置 - vs2010指的是Microsoft Visual Studio 2010,这是一个集成开发环境(IDE),支持多种编程语言,常用于Windows平台下的应用程序开发。 - 配置opencv通常包括将opencv的头文件目录添加到vs2010项目中,并将相应的库文件目录添加到项目中,以及配置项目属性中的附加依赖项。 3. 摄像头视频捕获 - 在opencv中显示摄像头视频通常涉及使用VideoCapture类。这个类能够从摄像头或其他视频文件中捕获帧。 - 显示视频帧通常需要创建一个窗口,并在该窗口中不断地刷新显示每一帧图像。 4. 项目文件命名及结构 - 标题中出现了多个相同或相似的项目命名('opencv_test'、'opencv_test'、'opencv2test'),这可能表明文件内包含了与之对应的测试或示例代码。 - 压缩包文件名称列表中仅包含'opencv_test',暗示此压缩包可能包含与上述标题匹配的代码文件、配置文件或相关资料。 5. 开发工具和版本的兼容性 - 通常开发时需要确保软件库版本与开发环境兼容。例如,opencv 2.4.8版本在vs2010环境下应该有很好的兼容性。 - 兼容性问题可能出现在库文件和开发环境的编译器版本不匹配或API变更导致的问题。 6. 开发流程与步骤 - 开发时,一般先配置好开发环境,安装并配置OpenCV库。 - 然后创建一个新的项目,并将OpenCV库添加到项目中。 - 接着编写代码使用VideoCapture类等API来捕获摄像头视频,并使用imshow函数显示视频帧。 7. 问题排查与调试 - 如果在显示摄像头视频的过程中遇到问题,需要进行相应的调试。 - 常见问题可能包括摄像头未正确连接、OpenCV库未正确配置、显卡驱动问题等。 8. 开源社区和技术支持 - OpenCV是一个活跃的开源项目,拥有广泛的社区和技术支持。 - 开发者在遇到问题时,可以查阅官方文档、参考在线教程、论坛帖子或直接在开源社区中寻求帮助。 以上知识点全面覆盖了从标题、描述和标签中提取的信息,并提供了详细的解释和背景知识。这些知识对于理解和实现opencv与vs2010的整合,以及摄像头视频显示功能具有重要意义。

import torch, os, cv2 from model.model import parsingNet from utils.common import merge_config from utils.dist_utils import dist_print import torch import scipy.special, tqdm import numpy as np import torchvision.transforms as transforms from data.dataset import LaneTestDataset from data.constant import culane_row_anchor, tusimple_row_anchor if __name__ == "__main__": torch.backends.cudnn.benchmark = True args, cfg = merge_config() dist_print('start testing...') assert cfg.backbone in ['18','34','50','101','152','50next','101next','50wide','101wide'] if cfg.dataset == 'CULane': cls_num_per_lane = 18 elif cfg.dataset == 'Tusimple': cls_num_per_lane = 56 else: raise NotImplementedError net = parsingNet(pretrained = False, backbone=cfg.backbone,cls_dim = (cfg.griding_num+1,cls_num_per_lane,4), use_aux=False).cuda() # we dont need auxiliary segmentation in testing state_dict = torch.load(cfg.test_model, map_location='cpu')['model'] compatible_state_dict = {} for k, v in state_dict.items(): if 'module.' in k: compatible_state_dict[k[7:]] = v else: compatible_state_dict[k] = v net.load_state_dict(compatible_state_dict, strict=False) net.eval() img_transforms = transforms.Compose([ transforms.Resize((288, 800)), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)), ]) if cfg.dataset == 'CULane': splits = ['test0_normal.txt', 'test1_crowd.txt', 'test2_hlight.txt', 'test3_shadow.txt', 'test4_noline.txt', 'test5_arrow.txt', 'test6_curve.txt', 'test7_cross.txt', 'test8_night.txt'] datasets = [LaneTestDataset(cfg.data_root,os.path.join(cfg.data_root, 'list/test_split/'+split),img_transform = img_transforms) for split in splits] img_w, img_h = 1640, 590 row_anchor = culane_row_anchor elif cfg.dataset == 'Tusimple': splits = ['test.txt'] datasets = [LaneTestDataset(cfg.data_root,os.path.join(cfg.data_root, split),img_transform = img_transforms) for split in splits] img_w, img_h = 1280, 720 row_anchor = tusimple_row_anchor else: raise NotImplementedError for split, dataset in zip(splits, datasets): loader = torch.utils.data.DataLoader(dataset, batch_size=1, shuffle = False, num_workers=1) fourcc = cv2.VideoWriter_fourcc(*'MJPG') print(split[:-3]+'avi') vout = cv2.VideoWriter(split[:-3]+'avi', fourcc , 30.0, (img_w, img_h)) for i, data in enumerate(tqdm.tqdm(loader)): imgs, names = data imgs = imgs.cuda() with torch.no_grad(): out = net(imgs) col_sample = np.linspace(0, 800 - 1, cfg.griding_num) col_sample_w = col_sample[1] - col_sample[0] out_j = out[0].data.cpu().numpy() out_j = out_j[:, ::-1, :] prob = scipy.special.softmax(out_j[:-1, :, :], axis=0) idx = np.arange(cfg.griding_num) + 1 idx = idx.reshape(-1, 1, 1) loc = np.sum(prob * idx, axis=0) out_j = np.argmax(out_j, axis=0) loc[out_j == cfg.griding_num] = 0 out_j = loc # import pdb; pdb.set_trace() vis = cv2.imread(os.path.join(cfg.data_root,names[0])) for i in range(out_j.shape[1]): if np.sum(out_j[:, i] != 0) > 2: for k in range(out_j.shape[0]): if out_j[k, i] > 0: ppp = (int(out_j[k, i] * col_sample_w * img_w / 800) - 1, int(img_h * (row_anchor[cls_num_per_lane-1-k]/288)) - 1 ) cv2.circle(vis,ppp,5,(0,255,0),-1) vout.write(vis) vout.release()

2023-04-23 上传