<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ROS—基于python3實現(xiàn)opencv圖像處理任務(wù)

          共 3581字,需瀏覽 8分鐘

           ·

          2022-05-31 10:27

          點擊下方卡片,關(guān)注“新機器視覺”公眾號

          重磅干貨,第一時間送達

          ?

          網(wǎng)上所有的資料都是基于catkin工具進行的,而且在編譯時會發(fā)現(xiàn)只支持opencv3,不支持opencv4,所以無法使用。


          博主這里使用catkin_make工具成功編譯python3的cv_bridge,這篇博客應(yīng)該是全網(wǎng)唯一一個用catkin_make工具編譯cv_bridge而且最終運行成功的博客了,也希望能幫到各位小伙伴開發(fā)ROS python3+opencv4的項目!



          0.軟件環(huán)境


          • Ubuntu18.04

          • python3.6.9

          • ROS Melodic


          Jetson系列基礎(chǔ)環(huán)境配置:Jetson系列——Ubuntu18.04版本基礎(chǔ)配置(換源、ROS、遠程桌面、開機自連WIFi、SD卡備份):

          https://blog.csdn.net/qq_45779334/article/details/108611797


          樹莓派環(huán)境配置:樹莓派4B——Ubuntu 18.04.05安裝和基礎(chǔ)配置教程(包括WIFI和遠程桌面配置、ROS和主從機控制):

          https://blog.csdn.net/qq_45779334/article/details/108969323


          虛擬機環(huán)境配置:Ubuntu——雙系統(tǒng)Ubuntu18.04系統(tǒng)安裝和基礎(chǔ)配置并安裝ROS:

          https://blog.csdn.net/qq_45779334/article/details/113815018



          1.編譯python3的cv_bridge


          在ROS中想使用python3,最重要的就是需要重新編譯基于python3的cv_bridge,只有我們在編譯完成后,才能基于python3的cv_bridge完成圖像相關(guān)節(jié)點的使用,所以編譯cv_bridge便是最基礎(chǔ)和最重要的一步,該博客詳細介紹了完整的編譯過程,按步驟進行操作即可成功。


          ROS——基于Ubuntu18.04和ROS Melodic編譯python3的cv_bridge:

          https://blog.csdn.net/qq_45779334/article/details/119641789


          在編譯好cv_bridge后,我們就可以進行測試基于python3的圖像處理節(jié)點啦!



          2.創(chuàng)建基于python3的圖像ROS節(jié)點


          (1)初始化py3_test_ws工作空間


          mkdir py3_test_ws && cd py3_test_wsmkdir src && cd srccatkin_init_workspace


          (2)創(chuàng)建功能包


          catkin_create_pkg py3_demo rospy rosmsg roscpp


          (3)編寫python3的圖像發(fā)布和接收節(jié)點


          cd py3_demo && mkdir scriptscd scripts && touch camera.py img_process.pychmod +x camera.pychmod +x img_process.py


          將以下兩個節(jié)點代碼分別粘進對應(yīng)的文件中:


          攝像頭發(fā)布節(jié)點


          camera.py


          #!/usr/bin/env python3# coding:utf-8
          import cv2import numpy as npimport rospyfrom std_msgs.msg import Headerfrom sensor_msgs.msg import Imagefrom cv_bridge import CvBridge , CvBridgeErrorimport time
          if __name__=="__main__": ? ?import sys ? ?print(sys.version) # 查看python版本 ? ?capture = cv2.VideoCapture(0) # 定義攝像頭 ? ?rospy.init_node('camera_node', anonymous=True) #定義節(jié)點 ? ?image_pub=rospy.Publisher('/image_view/image_raw', Image, queue_size = 1) #定義話題 ? ? ? ?header = Header(stamp = rospy.Time.now()) ? ?header.frame_id = "Camera" ? ?ros_frame = Image() ? ?ros_frame.header=header ? ?ros_frame.width = 640 ? ?ros_frame.height = 480 ? ?ros_frame.encoding = "bgr8" ? ?# ros_frame.step = 1920
          ? ?while not rospy.is_shutdown(): ? ?# Ctrl C正常退出,如果異常退出會報錯device busy! ? ? ? ?start = time.time() ? ? ? ?ret, frame = capture.read() ? ? ? ?if ret: # 如果有畫面再執(zhí)行 ? ? ? ? ? ?# frame = cv2.flip(frame,0) ? #垂直鏡像操作 ? ? ? ? ? ?frame = cv2.flip(frame,1) ? #水平鏡像操作 ? ? ? ? ? ? ? ? ?ros_frame.data = np.array(frame).tostring() #圖片格式轉(zhuǎn)換 ? ? ? ? ? ?image_pub.publish(ros_frame) #發(fā)布消息 ? ? ? ? ? ?end = time.time() ? ? ? ? ? ? ?print("cost time:", end-start ) # 看一下每一幀的執(zhí)行時間,從而確定合適的rate ? ? ? ? ? ?rate = rospy.Rate(25) # 10hz
          ? ?capture.release() ? ?cv2.destroyAllWindows() ? ?print("quit successfully!")


          攝像頭接收處理節(jié)點


          img_process.py


          #!/usr/bin/env python3# coding:utf-8
          import rospyimport numpy as npfrom sensor_msgs.msg import Imagefrom cv_bridge import CvBridge, CvBridgeErrorimport cv2 def callback(data): ? ?cv_img = bridge.imgmsg_to_cv2(data, "bgr8") ? ?cv2.imshow("frame" , cv_img) ? ?cv2.waitKey(1)
          if __name__ == '__main__': ? ?import sys ? ?print(sys.version) # 查看python版本 ? ? ? ?rospy.init_node('img_process_node', anonymous=True) ? ?bridge = CvBridge() ? ?rospy.Subscriber('/image_view/image_raw', Image, callback) ? ?rospy.spin()



          3.運行節(jié)點


          (1)編譯


          cd ../../..catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3


          (2)將工作空間添加進環(huán)境變量


          sudo vim ~/.bashrcsource /home/nano/workspace/py3_test_ws/devel/setup.bash


          (3)運行節(jié)點


          roscorerosrun py3_demo camera.pyrosrun py3_demo img_process.py


          運行效果圖


          可以看到,打印出的python版本為3.6.9:



          在這之后就可以使用python3進行圖像處理、深度學(xué)習(xí)等任務(wù)節(jié)點的開發(fā)啦,如果你也成功跑通了該項目,給博主點個贊支持下吧,嘻嘻~



          4.與C++圖像處理節(jié)點混合使用


          ROS——C++與Python3的圖像節(jié)點基于OpenCV相互發(fā)送和接收

          https://blog.csdn.net/qq_45779334/article/details/124323809


          來源:古月居


          本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。

          —THE END—
          瀏覽 82
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费作爱视频 | 超碰97在线免费观看 | 青青草原亚洲 | 国产之级淫秽 | 在线播放高清无码 |