2017-12-19 18 views
1

私は2枚の画像を見せて、Pythonで黒いビームで視覚的に分離したいと思っています。 私の問題は、Plot-Windowのcv2.imshow()機能で元の色が得られないということです。ここ は私のコードです:私はプロットウィンドウで、次の画像を取得するコードを実行した後imshowで黒いビームの2枚の画像を別々に

import cv2 
import numpy as np 

imgloc = 'path\Dosen_py.png' 
img = cv2.imread(imgloc) 
hight = np.shape(img)[0] 
beam = np.zeros((hight,10,3)) 

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
gray_3_channel = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR) 

horizontal = np.hstack((img,beam,gray_3_channel)) 

small = cv2.resize(horizontal, (0,0), fx=0.5, fy=0.5) 

cv2.imwrite("combi.png",small) 

cv2.imshow("Combi",small) 

cv2.waitKey() 

enter image description here

enter image description here

保存された「combi.png」-fileは、右の色を示してい

黒い梁を使わずに2枚の写真をプロットすると、元の色も得られます。 誰もこの黒い梁で何が間違っているのを知っていますか?

システム:Windows 10

IDE:画像のために、それはnp.uint8する必要がありながら、スパイダー(パイソン2.7)

答えて

2

デフォルトnp.ndarray.dtypeは、np.float64です。

このライン:

beam = np.zeros((hight,10,3)) 

、その後、beamhorixxxsmallすべてがnp.float64あります。したがって、float64を表示します。しかし、書き込み時には、np.uint8に切り捨てられます。

beam = np.zeros((hight,10,3), np.uint8) 
+0

それは動作しますが、あなたに感謝:


それはに変更する必要があります。 –

関連する問題