img = cv2.imread(fileName) print(fileName) showimg = img with torch.no_grad(): img = letterbox(img, new_shape=self.opt.img_size)[0] # Convert # BGR to RGB, to 3x416x416 img = img[:, :, ::-1].transpose(2, 0, 1) img = np.ascontiguousarray(img) img = torch.from_numpy(img).to(self.device) img = img.half() if self.half else img.float() # uint8 to fp16/32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 if img.ndimension() == 3: img = img.unsqueeze(0) # Inference pred = self.model(img, augment=self.opt.augment)[0] # Apply NMS pred = non_max_suppression(pred, self.opt.conf_thres, self.opt.iou_thres, classes=self.opt.classes, agnostic=self.opt.agnostic_nms) print(pred) # Process detections for i, det in enumerate(pred): if det is not None and len(det): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords( img.shape[2:], det[:, :4], showimg.shape).round() for *xyxy, conf, cls in reversed(det): label = '%s %.2f' % (self.names[int(cls)], conf) name_list.append(self.names[int(cls)]) plot_one_box(xyxy, showimg, label=label, color=self.colors[int(cls)], line_thickness=2) cv2.imwrite('prediction.jpg', showimg) self.result = cv2.cvtColor(showimg, cv2.COLOR_BGR2BGRA) self.QtImg = QtGui.QImage( self.result.data, self.result.shape[1], self.result.shape[0], QtGui.QImage.Format_RGB32) self.label_4.setPixmap(QtGui.QPixmap.fromImage(self.QtImg))
时间: 2023-06-11 12:05:24 浏览: 331
这段代码主要是将文件加载并读入到img变量中,然后对图像进行缩放(使用letterbox函数)以适应所选的img_size。最后将变换后的图像存入img中。在PyTorch的上下文中,这些变换是不进行梯度计算的,因为没有必要对它们进行反向传播。
相关问题
def imread(filename, flatten=False): """根据图片路径,将图片读取为cv2的图片处理格式.""" if not os.path.isfile(filename): raise FileNotExistError("File not exist: %s" % filename) # choose image readin mode: cv2.IMREAD_UNCHANGED=-1, cv2.IMREAD_GRAYSCALE=0, cv2.IMREAD_COLOR=1, readin_mode = cv2.IMREAD_GRAYSCALE if flatten else cv2.IMREAD_COLOR if PY3: img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), readin_mode) else: filename = filename.encode(sys.getfilesystemencoding()) img = cv2.imread(filename, readin_mode) return img
这是一个名为imread的函数,用于读取图像并将其转换为OpenCV的图像处理格式。函数接受两个参数:filename(图片路径)和flatten(是否将图像展平,默认为False)。
函数首先检查给定的文件是否存在,如果不存在,则会引发一个FileNotExistError异常。
然后,函数根据flatten参数的值选择图像读取模式。如果flatten为True,则选择cv2.IMREAD_GRAYSCALE,将图像解码为灰度图像;否则,选择cv2.IMREAD_COLOR,将图像解码为彩色图像。
接下来,函数使用cv2.imdecode函数将图像解码为OpenCV的图像格式。在Python 3中,使用np.fromfile函数从文件中读取图像数据,并使用cv2.imdecode进行解码。在Python 2中,首先将文件名编码为系统文件编码格式,然后使用cv2.imread函数进行解码。
最后,函数返回解码后的图像。
这个函数可以方便地读取图像并根据需要选择解码方式(灰度或彩色)。
import cv2 import numpy as np img1=cv2.imread('110.jpg',0),(200,200) img2=cv2.imread('111.jpg',0),(200,200) img3=cv2.imread('112.jpg',0),(200,200) img4=cv2.imread('210.jpg',0),(200,200) img5=cv2.imread('211.jpg',0),(200,200) img6=cv2.imread('212.jpg',0),(200,200) img7=cv2.imread('310.jpg',0),(200,200) img8=cv2.imread('311.jpg',0),(200,200) img9=cv2.imread('312.jpg',0),(200,200) train_images=[img1,img2,img3,img4,img5,img6,img7,img8,img9] labels=np.array([0,0,1,1]) recognizer=cv2.face.EigenFaceRecognizer_create() recognizer.train(train_images,labels) testimg=cv2.imread('paizhao.jpg',0) label,confidence=recognizer.predict(testimg) print('匹配标签:',label) print('可信程度:',confidence)
这段代码存在一些问题,首先应该将第一行代码中的两个import语句分开写,使用换行符或分号分隔。其次,对于每个图像,应该使用cv2.resize()函数将其大小调整为(200,200)。最后,labels应该包含与train_images中的图像数量相同的元素。
下面是修改后的代码:
```
import cv2
import numpy as np
img1 = cv2.imread('110.jpg', 0)
img1 = cv2.resize(img1, (200, 200))
img2 = cv2.imread('111.jpg', 0)
img2 = cv2.resize(img2, (200, 200))
img3 = cv2.imread('112.jpg', 0)
img3 = cv2.resize(img3, (200, 200))
img4 = cv2.imread('210.jpg', 0)
img4 = cv2.resize(img4, (200, 200))
img5 = cv2.imread('211.jpg', 0)
img5 = cv2.resize(img5, (200, 200))
img6 = cv2.imread('212.jpg', 0)
img6 = cv2.resize(img6, (200, 200))
img7 = cv2.imread('310.jpg', 0)
img7 = cv2.resize(img7, (200, 200))
img8 = cv2.imread('311.jpg', 0)
img8 = cv2.resize(img8, (200, 200))
img9 = cv2.imread('312.jpg', 0)
img9 = cv2.resize(img9, (200, 200))
train_images = [img1, img2, img3, img4, img5, img6, img7, img8, img9]
labels = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])
recognizer = cv2.face.EigenFaceRecognizer_create()
recognizer.train(train_images, labels)
testimg = cv2.imread('paizhao.jpg', 0)
testimg = cv2.resize(testimg, (200, 200))
label, confidence = recognizer.predict(testimg)
print('匹配标签:', label)
print('可信程度:', confidence)
```
请注意,我们还将标签修改为包含与train_images中的图像数量相同的元素,并将图像112的标签从1更改为0,图像310和312的标签从1更改为2。这样,labels就对应于train_images中每个图像的标签。
阅读全文