我想在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, ¢ers);
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) 例如,在文档中有:
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) 我正在尝试将以下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)