2016-08-20 8 views
0

どうすればpythonで作れますか?私はこのラインopencv pythonで黒色を赤に変える方法

img_rgb.Set(mask,cv2.Scalar(0,0,255)) 

、ここで問題に直面したコードされています

import numpy as np 
import imutils 

import cv2 

img_rgb = cv2.imread('figi.jpg') 

Conv_hsv_Gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) 

ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU) 

img_rgb.Set(mask,cv2.Scalar(0,0,255)) 

cv2.imshow("imgOriginal", img_rgb) # show windows 

cv2.imshow("output", res) # show windows 

cv2.imshow("mask", mask) # show windows 

cv2.waitKey(0) 
+1

何が問題でしたか?赤は実際に青いですか?クラッシュ?もっとお聞かせください。 –

+1

cv2.THRES_OTSUはしきい値を自動的に決定し、おそらく純粋な黒色ではありません。 ret、mask = cv2.threshold(Conv_hsv_Gray、0、255、cv2.THRESH_BINARY_INV)または 'ret、mask = cv2.threshold(Conv_hsv_Gray、1、255、cv2.THRESH_BINARY_INV)'(thres値がインクルーシブか排他的か)代わりに。あなたの入力イメージも投稿してください。jpegは "黒"が "純粋な黒"にならないようにアーティファクトを導入するかもしれません。 – Micka

+0

入力イメージはhttp://i.stack.imgur.com/FjEXu.jpg で、出力イメージはhttp://i.stack.imgur.com/vhb67.png です。画像では、赤色のcuzに変換する赤色のintenstyは黒色以上ですので、変更後は黒いオブジェクトを追跡するのは簡単ですenyの妨害なし –

答えて

2

API mat.setTo()については、これはC++ OpenCVの中にいることを理由に起因して、Python用OpenCVのモジュールでは使用できませんしかし、cv::Matオブジェクトをイメージ操作の基本エンティティとして使用しますが、Pythonではそのようなcv::Matコンセプトはありません。代わりに、Opencv用のPython APIはよく知られたライブラリnumpyを画像操作操作に使用し、numpyはマスクを使用して値を設定する:

img_rgb[mask == 255] = [0, 0, 255] 

この行をimg_rgb.Set(mask,cv2.Scalar(0,0,255))に置き換えるだけで作業が完了します。

+0

本当にありがとう、私はそれをelhamdoullah –

関連する問題