I trained my data at kaggle and ı download my trained model . When ı try to predict one of frame ,python gives me an error : AttributeError: ‘numpy.ndarray’ object has no attribute ‘apply_tfms’ . I am using opencv for capturing frames . Is it wrong data type or something like that ?

so what is t ? Is it my captured frame ? What has to be arr at code ? arguments ?

`arr`

is a numpy array.

What you are currently passing to `predict`

`t`

is the tensor created from your numpy array that is given to you from opencv

Thanks ı will try.

I’m actually having a problem getting this code to work for me. I am also using opencv but the images are coming out strange

```
p = PIL.Image.fromarray(n)
t = pil2tensor(p, dtype=np.uint8)
im = Image(t)
learn.predict(im)
```

what is “n”?

```
learn = load_learner('E:\İndirmeler', 'trained_model.pkl')
im = cv2.imread("One_8.jpg")
learn.predict(im)
```

AttributeError: ‘numpy.ndarray’ object has no attribute ‘apply_tfms’

As @baz says, you need

- convert numpy image to torch.Tensor
- reorder channels
- create fast.ai “Image”

```
learn = load_learner('E:\İndirmeler', 'trained_model.pkl')
p = cv2.imread("One_8.jpg") # p is numpy array with shape (height,width,channels)
t = pil2tensor(p, dtype=np.uint8) # converts to numpy tensor
t = t.permute(2,0,1) # Move num_channels as first dimension
im = Image(t) # Convert to fastAi Image - this class has "apply_tfms"
learn.predict(im)
```

NB: you should check the channels order: as I remember opencv has BGR and we use RGB!

Reference for OpenCv image shape:

```
learn = load_learner('E:\İndirmeler', 'trained_model.pkl')
p = cv2.imread("One_8.jpg",0) # p is numpy array with shape (height,width,channels)
t = pil2tensor(p, dtype=np.uint8) # converts to numpy tensor
t = t.permute(2,0,1) # Move num_channels as first dimension
im = Image(t) # Convert to fastAi Image - this class has "apply_tfms"
im.show()
```

I am geting this error: TypeError: Invalid dimensions for image data

Try to tranpose the numpy array

```
learn = load_learner('E:\İndirmeler', 'trained_model.pkl')
p = cv2.imread("One_8.jpg",0) # p is numpy array with shape (height,width,channels)
p = p.transpose(2,0,1) # Move num_channels as first dimension
t = pil2tensor(p, dtype=np.uint8) # converts to numpy tensor
im = Image(t) # Convert to fastAi Image - this class has "apply_tfms"
im.show()
```

which one ? transpose the `im`

?

Notice I’ve changed the code slightly, adding `p = p.transpose(2,0,1)`

and removing `t = t.permute(2, 0, 1)`

I tried it . Following error is :

p = p.transpose(2,0,1) # Move num_channels as first dimension

ValueError: axes don’t match array

Ok this is working for me:

```
p = cv2.imread("/home/h/Desktop/a.png") # p is numpy array with shape (height,width,channels)
print(p.shape)
t = pil2tensor(p, dtype=np.uint8) # converts to numpy tensor
im = Image(t) # Convert to fastAi Image - this class has "apply_tfms"
im.show()
```

I tried it . There is no error or warnings . Ok .But there is nothing showed .

Are you running it in a notebook?

Nope. I tried it at python IDE Pycharm

That will be why then

Is it problem with pycharm or with all of IDE’s ?