Question :
Disclaimer: huge openCV noob
Traceback (most recent call last):
File “lanes2.py”, line 22, in
canny = canny(lane_image)
File “lanes2.py”, line 5, in canny
gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
TypeError: Expected cv::UMat for argument ‘src’
What exactly is ‘src’ referring to?
Answer #1:
src
is the first argument to cv2.cvtColor
.
The error you are getting is because it is not the right form. cv2.Umat()
is functionally equivalent to np.float32()
, so your last line of code should read:
gray = cv2.cvtColor(np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
Answer #2:
gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)
UMat is a part of the Transparent API (TAPI) than help to write one code for the CPU and OpenCL implementations.
Answer #3:
The following can be used from numpy
:
import numpy as np
image = np.array(image)
Answer #4:
Not your code is the problem this is perfectly fine:
gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
The problem is that imgUMat is None
so you probably made a mistake when loading your image:
imgUMat = cv2.imread("your_image.jpg")
I suspect you just entered the wrong image path.
Answer #5:
Is canny
your own function? Do you use Canny from OpenCV inside it? If yes check if you feed suitable argument for Canny
– first Canny
argument should meet following criteria:
- type:
<type 'numpy.ndarray'>
- dtype:
dtype('uint8')
- being single channel or simplyfing: grayscale, that is 2D array, i.e. its
shape
should be 2-tuple
ofint
s (tuple
containing exactly 2 integers)
You can check it by printing respectively
type(variable_name)
variable_name.dtype
variable_name.shape
Replace variable_name
with name of variable you feed as first argument to Canny
.
Answer #6:
This is a general error, which throws sometimes, when you have mismatch between the types of the data you use. E.g I tried to resize the image with opencv, it gave the same error. Here is a discussion about it.
Answer #7:
Just add this at start:
image = cv2.imread(image)
Answer #8:
Some dtype are not supported by specific OpenCV functions. For example inputs of dtype np.uint32 create this error. Try to convert the input to a supported dtype (e.g. np.int32 or np.float32)