2016-08-20 617 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 –

相关问题