2016-08-20 216 views
0

如何在python中創建它?我面臨的問題,此行如何通過opencv將黑色更改爲紅色

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 im改變黑色在圖像中並將其轉換爲紅色顏色因爲紅色的顏色比黑色更強所以在改變後它將很容易跟蹤黑色物體而不會受到干擾 –

回答

2

mat.setTo()的API是不是在OpenCV中模塊蟒蛇可用,這是由於該原因,在C++ opencv的使用cv::Mat對象作爲圖像操作的基本實體,但是在Python中沒有這樣的概念,相反,Opencv的Python API使用衆所周知的庫numpy進行圖像操作操作,numpy具有非常漂亮的語法來使用掩碼設置值:

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

簡單地用img_rgb.Set(mask,cv2.Scalar(0,0,255))代替這條線可以完成您的工作。

+0

非常感謝你,我讓它elhamdoullah –

相關問題