[참고]

https://github.com/zedshaw/learn-more-python-the-hard-way-solutions

[참고]  Learn python3 the hard way - Zed A.Shaw


  • close - 에디터에서 파일 닫기.
  • read - 파일의 컨텐츠를 열기. 변수에 결과를 할당 할 수 있음.
  • readline - 텍스트 파일의 한 줄을 읽음.
  • truncate - 빈 파일. 파일 관리하려면 주의할 것.
  • write('stuff') - 파일에 'stuff'를 쓰기
  • seek(0) - 읽기/쓰기한 위치에서 파일의 시작으로 이동.


#print 뒤에 end='' 의미


print("I'm UBSman", end='')    # '\n'을 입력하지 않아도 print에게 줄 바꿈을 하지 말고 다음 주로 가게 함.



ex.py


print("I'm UBSman", end='')

age = input()


print(f"I'm {age}old man.")


$python3 ex.py    #실행





[참고]

https://wikidocs.net/743


줄바꿈 방지

print 문 실행 시 항상 문자열 마지막에 \n 문자가 출력되어 줄바꿈이 일어나게 된다. 이렇게 마지막 문자인 \n을 생략할 수 있는 방법이 있는데 이것또한 파이썬 3 버전과 파이썬 2.7 버전이 서로 다르다.

파이썬 3 버전의 예

print ("No new line", end=" ");print ("ok?")

파이썬 3 버전의 경우 줄바꿈 문자를 제거하기 위해서 위와 같이 끝 문자를 지정할 수 있는 end 파라미터를 설정하면 된다. 지정하지 않으면 디폴트로 \n 문자가 세팅된다.

파이썬 2.7 버전의 예

print "No new line",;print "ok?"

파이썬 2.7 버전의 경우 줄바꿈 문자를 제거하기 위해서 문자열의 끝에 콤마(,)를 덧불이면 된다.


[참고]

http://bigwork.tistory.com/25


[파이썬2 버전확인 (OS : 우분투 16.04)]

$python -V

$python --version


[파이썬3 버전확인 (OS : 우분투 16.04)]

$python3 -V

$python3 --version


[python 설치현황 보기]

$ls -alh /usr/bin/python*


[우분투 설치 절차]

1. https://www.python.org/downloads/release/python-370/ 에서 파이썬3.7 다운로드. (Window, Mac OS X 는 있는데 리눅스는 없음. 그냥 Source release 다운)

2. 압축풀기 

3. $./configure              // make파일 만들어줌

(If you want a release build with all stable optimizations active(PGO, etc), please run ./configure --enable-optimizations)

3-1. $./configure --enable-optimizations   // 두 번째 시도는 최적화로 시작했음

4. $make                     // 설치시작

5. $make test               //  테스트 시작 (3-1로 시작하면 테스트 자동실행. 10분 정도 소요됨)

6. $sudo make install     //  또 설치! 결과는 오류 메시지 뜸(3-1로 시작해도 install 오류 메시지 뜸)

7. $./python                 // 다운로드 폴더에서 파이썬 실행하면 3.7로 접속됨

8. $reboot                   // 재실행하고 터미널에서 python3 입력하면 3.7로 접속됨


[파이선 실행하기]

$python3.7 코드파일.py

($python3 -V 이후 3.7 경로로 변경 되어 있다면 $python3 코드파일.py로 입력하면 됨)



[의견]

1. windows는 설치도 쉽고 예제가 잘 실행 됨

2. 우분투는 설치는 실패했으나 파이썬3.7 실행은 가능함. 

3. 테스트 코드


#ex5.py


my_age = 34

print(f"My age is {my_age}.")    


#이 코드가 내재된 우분투 환경의 파이썬2.7과 파이썬3.5에서 오류가 나서 이 블로그를 쓰게 됨.

#learn python3 the hard way의 저자 Zed A.Shaw 님은 파이썬 3.6에서 실행하라고 하심.



$python3.7 ex5.py          // 실행

[gcc 버전확인]

$gcc --version


[gcc 설치]

$sudo apt-get install gcc




[g++ 버전확인]

$g++ --version


[g++ 설치]

$sudo apt-get install g++




[.deb 파일 설치하기]


1. (다운로드 폴더로 이동 후 터미널 열기)

$sudo dpkg -i 파일명.dev


2. 파일 더블 클릭하면 우분투소프트웨어로 들어가짐. 설치 클릭

https://gist.github.com/KhaledSMQ/081a6fffca92d50ab8b634d1b5b795ae[참고]

http://webnautes.tistory.com/1030



[설치버전 확인하기]

$pkg-config --modversion opencv


[기존 설치된 패키지 업그레이드]

$sudo apt-get update

$sudo apt-get upgrade


[OpenCV 컴파일 전 패키지 설치]

$sudo apt-get install build-essential cmake   

$sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

$sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev

$sudo apt-get install libv4l-dev v4l-utils

$sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

$sudo apt-get install libqt4-dev

$sudo apt-get install mesa-utils libgl1-mesa-dri libqt4-opengl-dev

$sudo apt-get install libatlas-base-dev gfortran libeigen3-dev

$sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy


[OpenCV 버전 다운로드]

https://opencv.org/releases.html


[build 폴더 만들고 cmake 실행]


$

$cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D WITH_TBB=OFF \

-D WITH_IPP=OFF \

-D WITH_1394=OFF \

-D BUILD_WITH_DEBUG_INFO=OFF \

-D BUILD_DOCS=OFF \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=OFF \

-D BUILD_TESTS=OFF \

-D BUILD_PERF_TESTS=OFF \

-D WITH_QT=ON \

-D WITH_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH= ../../opencv_contrib-3.4.0/modules \

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

../


(결과) 실패

1. openCV 2.4.13을 설치하려고 진행 했으나 제대로 설치가 안 됨. 참고 블로그는 openCV 3.3 (ubuntu 16.04)를 설치하는 과정을 담음.



[참고]

https://gist.github.com/KhaledSMQ/081a6fffca92d50ab8b634d1b5b795ae


[패키지 설치]

$sudo apt-get update

$sudo apt-get install -y build-essential

$sudo apt-get install -y cmake

$sudo apt-get install -y libgtk2.0-dev

$sudo apt-get install -y pkg-config

$sudo apt-get install -y python-numpy python-dev

$sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev

$sudo apt-get install -y libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev


$sudo apt-get -qq install libopencv-dev checkinstall yasm libdc1394-22-dev libxine2 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils


[OpenCV 버전 다운로드 -> build 폴더 만들기 -> cmake 실행]

$cmake -G "Unix Makefiles" 

-D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc  \

-D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local  \

-D WITH_TBB=ON  \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D WITH_V4L=ON \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=ON \

-D WITH_QT=ON \

-D WITH_OPENGL=ON \

-D BUILD_FAT_JAVA_LIB=ON \

-D INSTALL_TO_MANGLED_PATHS=ON \

-D INSTALL_CREATE_DISTRIB=ON \

-D INSTALL_TESTS=ON \

-D ENABLE_FAST_MATH=ON  \

-D WITH_IMAGEIO=ON \

-D BUILD_SHARED_LIBS=OFF \

-D WITH_GSTREAMER=ON \

.. \


[사용중인 컴퓨터 CPU 코어 수 확인]
$cat /proc/cpuinfo | grep processor | wc -l


$make all -j2 #2 = 코어 수

(설치 진행..)

(결과) 성공!

1. 설치 100% 가다니 감개 무량. 그런데 파이썬2에서 import cv2가 안 됨. 왜 그런지? ㅠㅠ

2. openCV 2.4.13을 설치 했는데 2.4.9.1이 뜨는 이유는? 에라 모르겠다~

'#C&C++ #영상비전#Qt' 카테고리의 다른 글

#qt 학습 사이트  (0) 2018.09.13
#Qt Creator #QCamera 예제  (0) 2018.08.28
#Qt #Qt 개발자 커뮤니티  (0) 2018.08.28
#Qt버전 확인 #qt 설치 #qmake  (0) 2018.08.24
#Qt #QVision환경설정  (0) 2018.08.24

[참고]

https://www.slideshare.net/carpedm20/pycon-korea-2016

https://ko-kr.facebook.com/iamprogrammer.io/posts/d41d8cd9/1185640541457468/

김태훈님 GitHub : https://github.com/carpedm20



[Computer Vision]



[Natural Language Processing]



[Reinforcement Learning]



[Algorithm Learning]

'#인공지능' 카테고리의 다른 글

#딥러닝, 머신러닝 학습 사이트  (0) 2018.11.12

[참고]

Tutorial Qt Creator - QCamera(WebCam en C++)

https://www.youtube.com/watch?v=9oQZPqi47Y8


$ sudo apt-get update

$ sudo apt-get install qtmultimedia5-dev        // 우분투 16.04에 설치하기(QCamera 모듈 불러오려면 설치 필요)


(Qt5에서 실행)

1. Welcome - Project - New Project - Application - Qt Widgets Application 

2. Name : CameraTest - 작업폴더 지정 - Next

3. Kit Selection(데스크탑 or 임베디드 or 기타 ) 선택하기(동시선택 가능) - Next

4. Details - Class Information - Base class: - QWidget 선택 - Next - Finish

5. code 작성


"CameraTest.pro"


QT += core gui multimedia multimediawidgets    // 멀티미디어 모듈을 모듈화


(...생략...)                                                     // 자동생성


QMAKE_CXXFLAGS += -std=gnu++14              // 표준 2014 추가


"widget.h"


(...생략...)                                                    //자동생성


class QCamera;

class QCameraViewfinder;

class QCameraImageCaputre;

class QVBoxLayout;


class Widget : public Qwidget

{

Q_OBJECT


public:

explicit Widget(QWidget *parent = nullptr); // 0을 nullptr로 변경

~Widget();

private:

Ui::Widget *ui;

QCamera *mCamera;

QCameraViewfinder *mCameraViewfinder;

QCameraImageCapture *mCameraImageCaputre;

QVBoxLayout *mLayout;

};


#endif



"widget.cpp"


#include "widget.h"

#include "ui_widget.h"

#include <QCamera>

#include <QCameraViewfinder>

#include <QCameraImageCapture>

#include <QVBoxLayout>


Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

mCamera = new QCamera(this);

mCameraViewfinder = new QCameraViewfinder(this);

mCameraImageCaputre = new QCameraImageCapture(mCamera, this);

mLayout = new QVBoxLayout;


mLayout ->addItem(mCameraViewfinder);

}


Widget::~Widget()

{

delete ui;

}


"widget.ui" (Design 영역. 코딩이 아닌 Drag&Drop으로 UI 만들기)

전 Object Name : optionPushButton 으로 함




"widget.h"


(...생략...)                                                    //자동생성


class QCamera;

class QCameraViewfinder;

class QCameraImageCaputre;

class QVBoxLayout;

class QMenu;

class QAction;


class Widget : public Qwidget

{

Q_OBJECT


public:

explicit Widget(QWidget *parent = nullptr); // 0을 nullptr로 변경

~Widget();

private:

Ui::Widget *ui;

QCamera *mCamera;

QCameraViewfinder *mCameraViewfinder;

QCameraImageCapture *mCameraImageCaputre;

QVBoxLayout *mLayout;

QMenu *mOpcionesMenu;

QAction *mEncenderAction;

QAction *mApagarAction;

QAction *mCapturarAction;

};


#endif


"widget.cpp"


#include "widget.h"

#include "ui_widget.h"

#include <QCamera>

#include <QCameraViewfinder>

#include <QCameraImageCapture>

#include <QVBoxLayout>

#include <QMenu>

#include <QAction>


Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

mCamera = new QCamera(this);

mCameraViewfinder = new QCameraViewfinder(this);

mCameraImageCaputre = new QCameraImageCapture(mCamera, this);

mLayout = new QVBoxLayout;

mOpcionesMenu = new QMenu("Option", this);

mEncenderAction = new QAction("Encender", this);

mApagarAction = new QAction("Apagar", this);

mCapturarAction = new QAction("Capturar", this);


mOptionMenu->addAction({mEncenderAction, mApagarAction, mCapturarAction});


ui->optionPushButton->setMenu(mOptionMenu);

mCamera->setViewfinder(mCameraViewfinder);

mLayout->addWidget(mCameraViewfinder);   //Item을 Widget으로 수정

mLayout->setMargin(0);

ui->scrollArea->setLayout(mLayout);


connect(mEncenderAction, &QAction::triggered, [&](){

mCamera->start();

});


connect(mAagarAction, &QAction::triggered, [&](){

mCamera->stop();

});


connect(mCapturarAction, &QAction::triggered, [&](){


});

}


Widget::~Widget()

{

delete ui;

}


"main.cpp"


#include "widget.h"

#include <QApplication>


int main(int argc, char *argv[])

{

QApplication a(argc, argv);

a.setStyple("fusion")

Widget w;

w.show();


return a.exec();

}


"widget.cpp"


#include "widget.h"

#include "ui_widget.h"

#include <QCamera>

#include <QCameraViewfinder>

#include <QCameraImageCapture>

#include <QVBoxLayout>

#include <QMenu>

#include <QAction>

#include <QFileDialog>


Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

mCamera = new QCamera(this);

mCameraViewfinder = new QCameraViewfinder(this);

mCameraImageCaputre = new QCameraImageCapture(mCamera, this);

mLayout = new QVBoxLayout;

mOpcionesMenu = new QMenu("Option", this);

mEncenderAction = new QAction("Encender", this);

mApagarAction = new QAction("Apagar", this);

mCapturarAction = new QAction("Capturar", this);


mOptionMenu->addAction({mEncenderAction, mApagarAction, mCapturarAction});


ui->optionPushButton->setMenu(mOptionMenu);

mCamera->setViewfinder(mCameraViewfinder);

mLayout->addWidget(mCameraViewfinder);   //Item을 Widget으로 수정

mLayout->setMargin(0);

ui->scrollArea->setLayout(mLayout);


connect(mEncenderAction, &QAction::triggered, [&](){

mCamera->start();

});


connect(mAagarAction, &QAction::triggered, [&](){

mCamera->stop();

});


connect(mCapturarAction, &QAction::triggered, [&](){

auto filename = QFileDialog::getSaveFileName(this, "Capturar", "/", "Imgae(*.jpg;*.jpeg)");


if (filename.isEmpty()){

return;

}


mCameraImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToFile);

QImageEncoderSettings imageEncorderSettings;

imageEncorderSettings.setCodec("image/jpeg");

imageEncorderSettings.setResolution(1288, 964);

mCameraImageCapture->setEncodingSettings(imageEncorderSettings);

mCamera->setCaptureMode(QCamera::CaptureStillImage);

mCamera->start();

mCamera->searchAndLock();

mCameraImageCapture->capture(filename);

mCamera->unlock();

});

}


Widget::~Widget()

{

delete ui;

}


오류 발생! 동영상 보고 코드 다시 확인해보기!

'#C&C++ #영상비전#Qt' 카테고리의 다른 글

#qt 학습 사이트  (0) 2018.09.13
#opencv 2.4.13 설치하기(c/c++)  (0) 2018.09.05
#Qt #Qt 개발자 커뮤니티  (0) 2018.08.28
#Qt버전 확인 #qt 설치 #qmake  (0) 2018.08.24
#Qt #QVision환경설정  (0) 2018.08.24

+ Recent posts