基本上我试图将下面的输出图像转换为颜色(RGB).此代码当前输出的图像是灰度,但是,对于我的应用程序,我希望它作为颜色输出.请让我知道我应该在哪里转换图像.
下面的代码也是C++,它使用openCV中的函数.请记住,我正在使用包装器在我的iphone应用程序中使用此代码.
cv::Mat CVCircles::detectedCirclesInImage(cv::Mat img, double dp, double minDist, double param1, double param2, int min_radius, int max_radius) {
//(cv::Mat img, double minDist, int min_radius, int max_radius)
if(img.empty())
{
cout << "can not open image " << endl;
return img;
}
Mat cimg;
medianBlur(img, img, 5);
cvtColor(img, cimg, CV_GRAY2RGB);
vector<Vec3f> circles;
HoughCircles( img //InputArray
, circles //OutputArray
, CV_HOUGH_GRADIENT //int method
, 1//dp //double dp=1 1 ... 20
, minDist //double minDist=10 log 1...1000
, 100//param1 //double param1=100
, 30//param2 //double …Run Code Online (Sandbox Code Playgroud) 如果我有一个图像(IplImage 8位)和二进制掩码(也是一个相同大小的8位IplImage,其中每个像素的值都是0或255),我怎样才能制作出每个像素与掩码中具有零值的像素相对应的图像具有零值,并且图像中与掩模中具有任何其他值(即255)的像素相对应的每个像素具有与原始值相同的值.图片?
换句话说,"在掩模区域中"的任何东西都将保持其原始值,并且掩模区域之外的任何内容将变为零.
我有这个面具:

假设我想用bitwise_and和另一个图像来填充白色这个工作:
cv::bitwise_and(srcImage, mask, dstImage, [mask???]);
Run Code Online (Sandbox Code Playgroud)
现在,生成的图像给出了这样的结果:

这很好,花花公子,但我想从结果中减去黑色.我已经看到了bitwise_并且还接受了一个8位单通道图像,我不确定它是做什么的.我想如果它是0然后让它通过,否则它会忽略它.
那么我如何使用相同的掩码将其转换为8位图像并使用它来删除结果的黑色?我想要相同的图像,但基本上没有黑色边框.
我试图在OpenCV 2.3.1中将1通道图像(16位)转换为3通道图像.我在使用合并功能时遇到问题并收到以下错误:
Mat temp, tmp2;
Mat hud;
tmp2 = cv_ptr->image;
tmp2.convertTo(temp, CV_16UC1);
temp = temp.t();
cv::flip(temp, temp, 1);
resize(temp, temp, Size(320, 240));
merge(temp, 3, hud);
Run Code Online (Sandbox Code Playgroud)
错误:没有匹配函数来调用'merge(cv :: Mat&,int,cv :: Mat&)'
谁能帮我这个?提前致谢!