Opencv 保持亮度的图像重着色
给定一个输入图像,我在考虑如何将图像重新着色为一种新的颜色,使图像的亮度与之前类似Opencv 保持亮度的图像重着色,opencv,image-processing,Opencv,Image Processing,给定一个输入图像,我在考虑如何将图像重新着色为一种新的颜色,使图像的亮度与之前类似 所以我写了一段天真的代码: #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <bits/stdc++.h> using namespace cv; using namespac
所以我写了一段天真的代码:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <bits/stdc++.h>
using namespace cv;
using namespace std;
int main() {
Mat img = imread("test2.png", 1);
Mat hsv; cvtColor(img, hsv, CV_BGR2HSV);
vector<Mat > channels;split(hsv, channels);
Mat luminance; channels[2].copyTo(luminance);
Mat res; img.copyTo(res);
channels.clear(); split(res, channels);
for (int i = 0; i<res.rows; i++) {
for (int j = 0; j<res.cols; j++) {
channels[0].at<uchar>(i, j) = 0;
channels[1].at<uchar>(i, j) = 0;
channels[2].at<uchar>(i, j) = 255;
}
}
merge(channels, res);
cvtColor(res, hsv, CV_BGR2HSV);
channels.clear(); split(hsv, channels);
luminance.copyTo(channels[2]);
merge(channels, res);
cvtColor(res, res, CV_HSV2BGR);
imwrite("result.png", res);
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
int main(){
Mat img=imread(“test2.png”,1);
Mat hsv;CVT颜色(img、hsv、CV_BGR2HSV);
矢量通道;分割(hsv,通道);
Mat亮度;通道[2]。复制到(亮度);
材料;图像复制(res);
channels.clear();拆分(res,channels);
对于(int i=0;i我认为您正在寻找“着色”。我没有任何关于如何使用OpenCV进行着色的参考资料,但Anthony Thyssen出色的ImageMagick注释中有一个描述-搜索“不知何故”一词。如果效果符合您的要求,也许您可以将其调整为OpenCV
在命令行中,使用ImageMagick,我执行了以下操作:
convert drop.png -fill red -tint 50% result.jpg
这里是Imagemagick的另一种方式
convert \( input.png -colorspace gray \) \( -clone 0 -fill red -colorize 100 \) \( -clone 0 \) -compose colorize -composite result1.png
选择要使用的颜色空间表示的强度/亮度。请参阅我的脚本color2gray at,查看不同颜色空间的强度/亮度显示为灰色。请附上输入图像以及当前结果。如果您可以使用一些图形编辑器并生成一些ws您的预期结果,并附上该结果。@DanMašek补充道:)
convert \( input.png -colorspace lab -channel red -separate \) \( -clone 0 -fill red -colorize 100 \) \( -clone 0 \) -compose colorize -composite result2.png
convert \( input.png -colorspace hsi -channel blue -separate \) \( -clone 0 -fill red -colorize 100 \) \( -clone 0 \) -compose colorize -composite result3.png