相关疑难解决方法(0)

OpenCV使用k-means来分色图像

我想在C++接口(cv命名空间)中使用k-means和OpenCV对图像进行分色,我得到了奇怪的结果.我需要它来减少一些噪音.这是我的代码:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main() {
    Mat imageBGR, imageHSV, planeH, planeS, planeV;

    imageBGR = imread("fruits.jpg");
    imshow("original", imageBGR);

    cv::Mat labels, data;
    cv::Mat centers(8, 1, CV_32FC1);
    imageBGR.convertTo(data, CV_32F);

    cv::kmeans(data, 8, labels,
            cv::TermCriteria(CV_TERMCRIT_ITER, 10, 1.0),
            3, cv::KMEANS_PP_CENTERS, &centers);
    imshow("posterized hue", data);
    data.convertTo(data, CV_32FC3);

    waitKey();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个奇怪的结果

水果

第一张图片:原创

第二张图片:k-means之后.

有什么建议?


更新:正确的解决方案.也许有人可以帮助我优化代码?

#include "cv.h"
#include "highgui.h"

#include <iostream>

using namespace cv;
using namespace std;

int main() {
    Mat src;

    src = imread("fruits.jpg");
    imshow("original", src);

    blur(src, src, Size(15,15));
    imshow("blurred", …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing k-means noise-reduction

17
推荐指数
2
解决办法
3万
查看次数

opencv中的"InputArray"和"Mat"是否相同?

例如,在文档中有:

void cv::absdiff    (   InputArray      src1,
        InputArray      src2,
        OutputArray     dst 
    ) 
Run Code Online (Sandbox Code Playgroud)

这是一样的:

void cv::absdiff    (   Mat     src1,
            Mat     src2,
            Mat     dst 
        ) 
Run Code Online (Sandbox Code Playgroud)

要么:

void cv::absdiff    (   Mat*    src1,
            Mat*    src2,
            Mat*    dst 
        ) 
Run Code Online (Sandbox Code Playgroud)

我需要这个来创建新的功能,例如

void absDiffSay(XXX src1, XXX src2, XXX dst)
{
  cv::absdiff(src1,src2,dst);
  cout<<"absdiff"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ opencv

12
推荐指数
1
解决办法
9034
查看次数

翻译Python函数以将掩码应用到Java中

我正在尝试将以下Python函数转换为Java,该函数将掩码应用于图像:

# Applies an image mask.
def region_of_interest(img, vertices):
    #defining a blank mask to start with
    mask = np.zeros_like(img)   

    #defining a 3 channel or 1 channel color to fill the mask with depending on the input image
    if len(img.shape) > 2:
        channel_count = img.shape[2]  # i.e. 3 or 4 depending on your image
        ignore_mask_color = (255,) * channel_count
    else:
        ignore_mask_color = 255

    #filling pixels inside the polygon defined by "vertices" with the fill color    
    cv2.fillPoly(mask, vertices, ignore_mask_color)

    #returning the image …
Run Code Online (Sandbox Code Playgroud)

java opencv mask

11
推荐指数
1
解决办法
814
查看次数

标签 统计

opencv ×3

c++ ×2

image-processing ×1

java ×1

k-means ×1

mask ×1

noise-reduction ×1