Opencv Error
Hello i use opencv in ros melodic on ubuntu 18, i use a kinectv2 for FullHd image, and an combination of filter to recognize ad object, in the same node have a topic witch pub the obj position. This is a code used for read the value of this point in depth image, is a 'mono16' image, but i have this error.
#!/usr/bin/env python
import roslib
import sys
import rospy
import cv2
import math, time
import numpy as np
from std_msgs.msg import String
from sensor_msgs.msg import Image
from geometry_msgs.msg import Point
from cv_bridge import CvBridge, CvBridgeError
class image_converter_depth :
def __init__(self):
self._t0 = time.time()
self.obj_point = Point()
self.blob_x = 0.0
self.blob_y = 0.0
self._time_detected = 0.0
self.blob_sub = rospy.Subsciber("blob/point_blob",Point, self.update_blob)
rospy.loginfo("Subsciber to blob point set")
self.image_pub = rospy.Publisher("Depth_image",Image)
rospy.loginfo("Publisher with circle in depth image ")
self.obj_pub = rospy.Publisher("blob/obj_point",Point)
self.bridege = CVBridge()
self.image_sub = rospy.Subsciber("/kinect2/sd/image_depth",Image,self.callback)
rospy.loginfo("Subsciber sd to depth image ")
def callback(self,data):
try:
cv_image=self.bridge.image_to_cv2(data,"mono16")
except CvBridgeError as e :
print(e)
(rows,cols,channels)=cv_image.shape
print(channels)
if ((int(rows/2))<int(self.blob_x)<(1920-int(rows/2))):
if (int(cols/2)<int(self.blob_y)<1080-int(cols/2)):
"""x_depth = self.blob_x-(960-int(rows/2))
y_depth = self.blob_y-(540-int(cols/2))
self.obj_point.z = cv_image[x_depth,y_depth]
self.obj_pub.publish(self.obj_point)"""
cv2.circle(cv_image, (50,50), 10, 255)
try:
self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image,"mono16"))
except CvBridgeError as e :
print(e)
def is_detected(self):
return(time.time() - self._time_detected < 1.0)
def update_blob(self,message):
self.blob_x = message.x
self.blob_y = message.y
self._time_detected = time.time()
def main (args):
ic = image_converter_depth()
rospy.init("Get_Obj_Pos", anononymus=True)
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()
if __name__ == '__main__':
main(sys.argv)
and the error is
Traceback (most recent call last):
File "/home/finokkio/catkin_ws/src/Get_Obj_Pos/src/Get_Pos.py", line 67, in <module>
main(sys.argv)
File "/home/finokkio/catkin_ws/src/Get_Obj_Pos/src/Get_Pos.py", line 58, in main
ic = image_converter_depth()
File "/home/finokkio/catkin_ws/src/Get_Obj_Pos/src/Get_Pos.py", line 26, in __init__
self.blob_sub = rospy.Subsciber("blob/point_blob",Point, self.update_blob)
AttributeError: 'module' object has no attribute 'Subsciber'
It's
Subscriber
, notSubsciber
.Note the
r
after thec
.thanks but now i have this error
You also misspelled
self.bridege = CVBridge()
Please do look over your code a little bit.
thanks i correct but have the same error