yolov3 裁剪识别的目标,并将剪裁的目标图片保存到本地

本文介绍了如何在YoloV3中实现目标裁剪功能,通过修改`draw_detection_v3()`函数,当检测到目标时,自动将目标裁剪并保存为JPEG图片,文件名包含类名、概率和计数。问题部分提到在实现过程中遇到的`save_cut_image`重定义问题,解决方案是在image.h中添加相应的函数声明。
摘要由CSDN通过智能技术生成

1 image.h中加入函数声明

void save_cut_image(int px, int py, int ph, int pw, int no, image m_img, char **names, float cut_pro, int the_class);

2 image.c中加入如下函数定义

void save_cut_image(int px, int py, int ph, int pw, int no, image m_img, char **names, float cut_pro, int the_class)
{
	image copy = copy_image(m_img);
	if (m_img.c == 3) rgbgr_image(copy);
	int x, y, k;
	char buff[256];
	sprintf(buff, "results//%s%.0f%%%d.jpg", names[the_class], cut_pro, no);
	printf(" cut_class  :%s  ...........cut_class:%.0f ", names[the_class], cut_pro);
	printf(names[the_class]);
	printf("%f",cut_pro);	
	IplImage *disp = cvCreateImage(cvSize(m_img.w, m_img.h), IPL_DEPTH_8U, m_img.c);
	int step = disp->widthStep;
	for (y = 0; y < m_img.h; ++y) {
		for (x = 0; x < m_img.w; ++x) {
			for (k = 0; k < m_img.c; +
  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
YOLOv4 中检测到的目标可以通过以下步骤进行批量裁剪保存到本地: 1. 从你的数据集中加载一张待检测图片,并将其输入 YOLOv4 模型中进行目标检测,得到检测结果。可以使用 OpenCV 库来加载图片,并使用 PyTorch 的 `torchvision` 库中的 `transforms` 函数来对图片进行预处理,以便输入模型。 ```python import cv2 import torch import torchvision.transforms as T # 加载图片 img = cv2.imread("path/to/image.jpg") # 对图片进行预处理 transform = T.Compose([ T.ToTensor(), T.Resize((608, 608)), T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) img = transform(img) img = img.unsqueeze(0) # 将图片输入模型进行目标检测 with torch.no_grad(): outputs = model(img.cuda()) ``` 2. 遍历检测结果,找到所有置信度大于设定阈值的目标,并对这些目标进行裁剪。可以使用 OpenCV 库中的 `cv2.rectangle()` 和 `cv2.imwrite()` 函数来对图片进行裁剪保存。 ```python # 设定置信度阈值和类别名称 confidence_threshold = 0.5 class_names = ["person", "car", "truck", ...] # 遍历检测结果 for output in outputs: # 处理输出结果 ... # 找到所有置信度大于阈值的目标 for detection in detections: if detection[4] > confidence_threshold: # 获取目标的左上角和右下角坐标 x1, y1, x2, y2 = detection[:4] # 裁剪目标 target = img[int(y1):int(y2), int(x1):int(x2)] # 保存目标到本地 class_name = class_names[detection[6]] cv2.imwrite(f"{class_name}.jpg", target) ``` 需要注意的是,以上代码只是一个简单的示例,实际使用时需要根据你的数据集和需求进行相应的调整。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值