imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
此行代码报错,不知道怎么解决
responses = client.simGetImages([airsim.ImageRequest("0", airsim.ImageType.Scene, False, False)])
response = responses[0] # get numpy array
img1d = np.frombuffer(response.image_data_uint8, dtype='int16')
img1d = cv2.resize(img1d, (480, 640))
img1d = np.array(img1d)
img = img1d.reshape(response.height, response.width,1)
img = np.flipud(img)
img = cv2.resize(img, (w, h))
img, info = findCircle(img)
def findCircle(img):
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgGray = cv2.medianBlur(imgGray,5)
circles = cv2.HoughCircles(imgGray, cv2.HOUGH_GRADIENT,1,100,param1=100,param2=30,minRadius=5,maxRadius=300)
try:
for i in circles[0,:]:
cv2.circle(img,(int(i[0]), int(i[1])), int(i[2]),(0,255,0),2)
cv2.circle(img,(int(i[0]), int(i[1])),2,(0,0,255),3)
return img,[int(i[0]), int(i[1])]
except:
return img, [0,0]
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.5.4) d:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::anonymous-namespace'::CvtHelper<struct cv::impl::
anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0x694991f6::Set<1,-1,-1>,struct cv::impl::A0x694991f6::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'
Invalid number of channels in input image:
'VScn::contains(scn)'
where
'scn' is 1
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 是将 BGR 格式的图片转换为灰度图。
这句本身没有问题,报错可以分析:(1)img 是否正确读入;(2)img 的格式是否正确。
具体的,先把 报错语句 注释掉,增加一行:print(img.shape),看看 img 的行数(高度)、列数(宽度)、通道数