在iOS中使用openCV进行图像处理

马特

我希望仅保留红色像素并使图像中的所有其他图像变暗。我想使用openCv。我通过以下代码设法过滤了红色,这要归功于SO,从对象中检测颜色并更改其颜色ios。

// Create Mat from UIimage
cv::Mat img = [self cvMatFromUIImage:[UIImage imageNamed:@"rgb1.jpg"]];
// Convert to HSV
cv::Mat hsvImage = cvCreateImage(img.size(),8, 3);
cv::cvtColor(img, hsvImage, CV_BGR2HSV);

std::vector<cv::Mat>channels;

// splitting the channels of HSV
cv::split(hsvImage, channels);
// Getting only the hue from channels
cv::Mat hue = channels[0];
// Creating a temporary image using the hue
cv::Mat dest;
cv::Mat temp = cvCreateImage(img.size(), 8, 3);

// Giving the threshold range
cv::inRange(hsvImage, cv::Scalar(90,50,50), cv::Scalar(130,255,255), dest);

// I guess image temp Image and Original image gets merged here
// I would appreciate some explanation here
cv::merge(channels, temp);
temp.setTo(cv::Scalar(90,50,50),dest);
cv::split(temp, channels);
cv::merge(channels, dest);

// Converting the HSV Image back to BGR
cv::cvtColor(dest, hsvImage, CV_HSV2BGR);
// Converting Mat to UIImage
self.imageView.image=[self UIImageFromCVMat:hsvImage];

但是我想保持红色不变,并使其余颜色变暗或模糊。我很困惑应该在哪里进行这些逆向操作以及如何进行逆向操作。

任何帮助,将不胜感激。

更新:

对我有用的代码,希望它对在那里的人有所帮助。

cv::Mat img = [self cvMatFromUIImage:[UIImage imageNamed:@"rgb1.jpg"]];
cv::Mat hsvImage;
cv::cvtColor(img , hsvImage, CV_BGR2HSV);

cv::Mat mask;
cv::inRange(hsvImage, cv::Scalar(90,50,50), cv::Scalar(130,255,255), mask);  //  This picks red color
//    cv::inRange(hsvImage, cv::Scalar(0,50,50), cv::Scalar(30,255,255), mask);  //  This picks blue color

self.imageView.image = [self UIImageFromCVMat:mask];

cv::Mat maskRgb;
cv::cvtColor(mask, maskRgb, CV_GRAY2BGR);

cv::Mat result;
//    cv::bitwise_and(img ,maskRgb ,result); // @berak but app crashed at this line
img.copyTo(result, mask);  //  This line writes the new masked image over the original image, I'm not sure if thats the right way instead of bitwise_and???
self.imageView1.image = [self UIImageFromCVMat:result];

您可能不需要拆分/合并通行证。为什么不从简单开始,并使用inRange从hsv图像制作蒙版,然后将其应用于图像?

cv::Mat hsvImage;
cv::cvtColor(img , hsvImage, CV_BGR2HSV);

Mat mask;  // red is on the left side of the [0..180] hue range
cv::inRange(hsvImage, cv::Scalar(0,50,50), cv::Scalar(30,255,255), mask);

cv::Mat maskRgb; // make a 3channel mask
cv::cvtColor(mask, maskRgb, CV_GRAY2BGR);

Mat result;
bitwise_and(img ,maskRgb ,result);

在此处输入图片说明

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IOS Swift项目中使用OpenCV进行视频处理

来自分类Dev

IOS Swift项目中使用OpenCV进行视频处理

来自分类Dev

如何在Python中使用OpenCV2对图像中的一种颜色进行饱和处理?

来自分类Dev

使用python中的openCV进行多线程图像处理

来自分类Dev

使用opencv预处理测试图像进行预测

来自分类Dev

在Raspberry PI上使用Python和OpenCV进行图像处理

来自分类Dev

使用OpenCV进行高斯模糊处理:仅对图像的子区域进行模糊处理?

来自分类Dev

包装使用OpenCV进行图像处理的C代码,以与也使用OpenCV的Python一起使用

来自分类Dev

使用OpenCV进行图像处理,去除图像中的背景文字和噪点

来自分类Dev

在进行字符识别之前使用OpenCV进行图像预处理(tesseract)

来自分类Dev

在Swift中使用完成处理程序对图像进行动画处理

来自分类Dev

使用GLCM进行图像处理

来自分类Dev

在 C++ 中使用 .at() 使用 OpenCV 扫描图像的异常未处理错误

来自分类Dev

在opencv中使用函数fillPoly处理错误的结果导致非常大的图像

来自分类Dev

在使用opencv(cv2)和python进行图像捕获和处理的程序中遇到错误

来自分类Dev

在Swift iOS中使用OpenCV

来自分类Dev

使用OpenCV的Tesseract OCR的预处理图像

来自分类Dev

使用opencv(图像处理)查找轮廓

来自分类Dev

图像处理-在MATLAB中使用Radon变换进行模式识别

来自分类Dev

如何在imagemagick中使用阴影对图像进行边距处理?

来自分类Dev

为什么我不能在 php 中使用 filesize() 进行图像处理

来自分类Dev

如何结合pyWavelet和openCV进行图像处理?

来自分类Dev

在python中使用OpenCV分割图像

来自分类Dev

在OpenCV Java中使用Mat显示图像

来自分类Dev

在python中使用OpenCV分割图像

来自分类Dev

在JAVA中使用Opencv模糊图像

来自分类Dev

使用opencv进行图像边缘平滑

来自分类Dev

使用for循环opencv python对图像进行卷积

来自分类Dev

使用opencv进行图像边缘平滑

Related 相关文章

  1. 1

    IOS Swift项目中使用OpenCV进行视频处理

  2. 2

    IOS Swift项目中使用OpenCV进行视频处理

  3. 3

    如何在Python中使用OpenCV2对图像中的一种颜色进行饱和处理?

  4. 4

    使用python中的openCV进行多线程图像处理

  5. 5

    使用opencv预处理测试图像进行预测

  6. 6

    在Raspberry PI上使用Python和OpenCV进行图像处理

  7. 7

    使用OpenCV进行高斯模糊处理:仅对图像的子区域进行模糊处理?

  8. 8

    包装使用OpenCV进行图像处理的C代码,以与也使用OpenCV的Python一起使用

  9. 9

    使用OpenCV进行图像处理,去除图像中的背景文字和噪点

  10. 10

    在进行字符识别之前使用OpenCV进行图像预处理(tesseract)

  11. 11

    在Swift中使用完成处理程序对图像进行动画处理

  12. 12

    使用GLCM进行图像处理

  13. 13

    在 C++ 中使用 .at() 使用 OpenCV 扫描图像的异常未处理错误

  14. 14

    在opencv中使用函数fillPoly处理错误的结果导致非常大的图像

  15. 15

    在使用opencv(cv2)和python进行图像捕获和处理的程序中遇到错误

  16. 16

    在Swift iOS中使用OpenCV

  17. 17

    使用OpenCV的Tesseract OCR的预处理图像

  18. 18

    使用opencv(图像处理)查找轮廓

  19. 19

    图像处理-在MATLAB中使用Radon变换进行模式识别

  20. 20

    如何在imagemagick中使用阴影对图像进行边距处理?

  21. 21

    为什么我不能在 php 中使用 filesize() 进行图像处理

  22. 22

    如何结合pyWavelet和openCV进行图像处理?

  23. 23

    在python中使用OpenCV分割图像

  24. 24

    在OpenCV Java中使用Mat显示图像

  25. 25

    在python中使用OpenCV分割图像

  26. 26

    在JAVA中使用Opencv模糊图像

  27. 27

    使用opencv进行图像边缘平滑

  28. 28

    使用for循环opencv python对图像进行卷积

  29. 29

    使用opencv进行图像边缘平滑

热门标签

归档