###質問内容
現在私はC++で書いた web cameraを用いて、リアルタイムでエッジ検出のコード をpythonにて同じ結果になるように書いているのですが、pythonにおいての輪郭検出の精度向上に関して質問したく思います。
どうもPythonだと、線が太く全ての輪郭を描画しません。
どこを直せば同じようになりますか?
###該当のソースコード
C++のコード #include "opencv/cv.hpp" int main(int argc, char* argv[]) { cv::VideoCapture cap(0); while (true) { cv::Mat frame, gray, bin; cap >> frame; cv::cvtColor(frame, gray, CV_BGR2GRAY); cv::threshold(gray, bin, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); std::vector<std::vector<cv::Point>> contours; cv::findContours(bin, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE); cv::drawContours(frame, contours, -1, cv::Scalar(0, 255, 0), 1, cv::LINE_8, cv::noArray(), 1); cv::imshow("window", frame); cv::waitKey(10); } } Pythonのコード import cv2 def capture_camera(): cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) ret, img_bin = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY or cv2.THRESH_OTSU) img_bin, contours, hierarchy = cv2.findContours(img_bin, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) cv2.drawContours(frame, contours, 0, (0, 255, 0), cv2.LINE_8) cv2.imshow('camera capture', frame) k = cv2.waitKey(1) if k == 27: break cap.release() cv2.destroyAllWindows() if __name__ == '__main__': capture_camera()
###注意事項
まだOpenCV始めたばかりなので、わからないことが多いです。
具体的には、pythonのコードのcontoursの理解がそこまでできてないです。
また、読みづらい文章、コードで申し訳ありません。
###バージョンなど
C++ Visual Studio 2015
OpenCV version 3.2
Python 3.5
Pycharm 2017.1 Professional
OpenCV version 3.2

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。