乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      第五章: pcDuino上面安裝和測試SimpleCV以及OpenCV

       xiaofenglib 2013-08-29
      pcDuino有計算能力來進行計算機視覺,這就讓很多在Arduino 上不可能的項目可以在pcDuino上實現(xiàn)。 我們可以把計算機視覺這一非常強大的技術(shù)用在我們的項目中。 在這章,我們來看怎么安裝和使用SimpleCV和OpenCV。


      SimpleCV的安裝和例子

      在我們開始動手之前,我們要確保手頭有一個 UVC 兼容的USB攝像頭。
      下面為安裝SimpleCV的步驟:
      1. $sudo apt-get install ipython python-opencv python-scipy python-numpy python-setuptools python-pip
      2. $sudo pip install https://github.com/ingenuitas/SimpleCV/zipball/master
      3. $sudo apt-get install python-pygame
      4. $sudo apt-get install python-imaging
      復(fù)制代碼
      在終端里面輸入 “$simpleCV" 就可以啟動simpleCV. simpleCV是一個交互的命令解釋器。 我們可以輸入命令來執(zhí)行:
      1. ubuntu@ubuntu:~$ simplecv

      2. +-----------------------------------------------------------+
      3. SimpleCV 1.3.0 [interactive shell] - http://
      4. +-----------------------------------------------------------+

      5. Commands:
      6. "exit()" or press "Ctrl+ D" to exit the shell
      7. "clear" to clear the shell screen
      8. "tutorial" to begin the SimpleCV interactive tutorial
      9. "example" gives a list of examples you can run
      10. "forums" will launch a web browser for the help forums
      11. "walkthrough" will launch a web browser with a walkthrough

      12. Usage:
      13. dot complete works to show library
      14. for example: Image().save("/tmp/test.jpg") will dot complete
      15. just by touching TAB after typing Image().

      16. Documentation:
      17. help(Image), ?Image, Image?, or Image()? all do the same
      18. "docs" will launch webbrowser showing documentation

      19. SimpleCV:1> cam=Camera()
      20. VIDIOC_QUERYMENU: Invalid argument
      21. VIDIOC_QUERYMENU: Invalid argument
      22. VIDIOC_QUERYMENU: Invalid argument
      23. VIDIOC_QUERYMENU: Invalid argument
      24. VIDIOC_QUERYMENU: Invalid argument
      25. VIDIOC_QUERYMENU: Invalid argument
      26. VIDIOC_QUERYMENU: Invalid argument

      27. SimpleCV:2> img=cam.getImage()

      28. SimpleCV:3> img.show()
      29. SimpleCV:5:
      復(fù)制代碼
      以下為命令執(zhí)行的結(jié)果:




      OpenCV的安裝和例子

      OpenCV 是個開源的計算機視覺軟件包。在這里我們詳細的介紹如何安裝OpenCV Python版本到pcDuino上面。 并且給出了兩個例子,一個例子用來通過USB 攝像頭來獲取圖形,另外一個例子通過OpenCV來做人臉識別。

      安裝步驟:
      1. $ sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools

      2. $sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python2.6-dev libgtk2.0-dev pkg-config

      3. $sudo apt-get install libopencv-dev python-opencv

      4. $sudo apt-get install python-dev

      5. $sudo ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.so /usr/lib
      6. $sudo ln -s /usr/lib/arm-linux-gnueabihf/libfreetype.so /usr/lib
      7. $sudo ln -s /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib

      8. $sudo easy_install PIL
      9. $sudo pip install -v PIL
      復(fù)制代碼
      例子1: 用OpenCV通過USB攝像頭來抓圖像:
      1. #!/Users/brent/.virtualenvs/lumber/bin/python

      2. import cv

      3. cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
      4. camera_index = 0
      5. capture = cv.CaptureFromCAM(camera_index)

      6. gx = gy = 1
      7. grayscale = blur = canny = False

      8. def repeat():
      9.     global capture #declare as globals since we are assigning to them now
      10.     global camera_index
      11.     global gx, gy, grayscale, canny, blur
      12.     frame = cv.QueryFrame(capture)
      13.     # import pdb; pdb.set_trace()

      14.     if grayscale:
      15.         gray = cv.CreateImage(cv.GetSize(frame), frame.depth, 1)
      16.         cv.CvtColor(frame, gray, cv.CV_RGB2GRAY)
      17.         frame = gray

      18.     if blur:
      19.         g = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, frame.channels)
      20.         cv.Smooth(frame, g, cv.CV_GAUSSIAN, gx, gy)
      21.         frame = g

      22.     if grayscale and canny:
      23.         c = cv.CreateImage(cv.GetSize(frame), frame.depth, frame.channels)
      24.         cv.Canny(frame, c, 10, 100, 3)
      25.         frame = c
      26.     cv.ShowImage("w1", frame)

      27.     c = cv.WaitKey(10)
      28.     if c==ord('='): #in "n" key is pressed while the popup window is in focus
      29.         gx += 2
      30.         gy += 2
      31.     elif c == ord('-'):
      32.         gx = max(1, gx-2)
      33.         gy = max(1, gy-2)
      34.     elif c == ord('x'):
      35.         gx += 2
      36.     elif c == ord('X'):
      37.         gx = max(1, gx-2)
      38.     elif c == ord('q'):
      39.         exit(0)

      40.     elif c == ord('b'):
      41.         blur = not blur
      42.     elif c == ord('g'):
      43.         grayscale = not grayscale
      44.     elif c == ord('c'):
      45.         canny = not canny

      46. while True:
      47. repeat()
      復(fù)制代碼
      例子二: 人臉識別

      輸入圖像:


      下載上面的圖像,保存為 ”opencv_in.jpg"。

      輸出圖像:

      1. #!/usr/bin/env python
      2. #coding=utf-8
      3. import os
      4. from PIL import Image, ImageDraw
      5. import cv

      6. def detect_object(image):
      7.     grayscale = cv.CreateImage((image.width, image.height), 8, 1)
      8.     cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

      9.     cascade = cv.Load("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml")
      10.     rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,
      11.         cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))

      12.     result = []
      13.     for r in rect:
      14.         result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))

      15.     return result

      16. def process(infile):
      17.     image = cv.LoadImage(infile);
      18.     if image:
      19.         faces = detect_object(image)

      20.     im = Image.open(infile)
      21.     path = os.path.abspath(infile)
      22.     save_path = os.path.splitext(path)[0]+"_face"
      23.     try:
      24.         os.mkdir(save_path)
      25.     except:
      26.         pass
      27.     if faces:
      28.         draw = ImageDraw.Draw(im)
      29.         count = 0
      30.         for f in faces:
      31.             count += 1
      32.             draw.rectangle(f, outline=(255, 0, 0))
      33.             a = im.crop(f)
      34.             file_name = os.path.join(save_path,str(count)+".jpg")
      35.      #       print file_name
      36.             a.save(file_name)

      37.         drow_save_path = os.path.join(save_path,"out.jpg")
      38.         im.save(drow_save_path, "JPEG", quality=80)
      39.     else:
      40.         print "Error: cannot detect faces on %s" % infile

      41. if __name__ == "__main__":
      42. process("./opencv_in.jpg")
      復(fù)制代碼
      保存上面的代碼到文件名為" test_face.py"的文件中。

      運行“$ python test_face.py" 來運行。

      chapter5_2.png (340.02 KB, 下載次數(shù): 5)

      chapter5_2.png

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多