社区
C++ 语言
帖子详情
OpenCV中如何是颜色加深
xuxinqiujiao123
2012-09-09 05:30:40
有一幅图片是一份文件,我想让红色的文字更红,黑色的文字更黑,白色背景更白,请问应该怎么做呢?
我的OpenCV版本是2.1的,用的C++语言
...全文
1689
5
打赏
收藏
OpenCV中如何是颜色加深
有一幅图片是一份文件,我想让红色的文字更红,黑色的文字更黑,白色背景更白,请问应该怎么做呢? 我的OpenCV版本是2.1的,用的C++语言
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuxinqiujiao123
2012-09-11
打赏
举报
回复
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main( )
{
//彩色3通道
Mat src(3,4,CV_8UC3);
//用来存储目的图片的矩阵
Mat res(3,4,CV_8UC3);
src = imread("1.jpg", 1 );
// Mat r(3,4,CV_8UC1),g(3,4,CV_8UC1),b(3,4,CV_8UC1);
//Mat* src2;
//多通道分成3个单通道
//在OpenCV中,一张3通道图像的一个像素点是按BGR的顺序存储的。
//split(&b,&src2);
//split(&g,&r);
/*红:255,0,0(rgb)
0,240,120(hsv)
黑:0,0,0(RGB)
160,0,0
白:255,255,255
160,0,240*/
for(int i=0;i<src.rows;i++)
for(int j=0;j<src.cols;j++)
{
for(int k=0;k<src.channels();k++)
{
if(src.at<uchar>(i,j*src.channels()+k)<128)
src.at<uchar>(i,j*src.channels()+k)=0;
else src.at<uchar>(i,j*src.channels()+k)=255;
}
}
//src.reshape(36,0);
// 创建窗口显示图片
namedWindow( "src" );
//namedWindow("result");
imwrite("jiashen.jpg",res);
imshow("src",src);
//imshow("result",res);
waitKey();
return 0;
}
大侠~看看我这个程序,阈值操作是不是不正确啊?操作之后的图片不是我想要的效果···颜色不对啊[Quote=引用 1 楼 的回复:]
扫描 整个图片的像素, 设定 红色, 黑色, 白色阈值。。。 如果像素值在这个阈值内,就认为是 什么颜色,, 浅点,灰色点 无所谓, 然后将该像素点 直接改成 全红, 全黑, 或者全白色。。。
[/Quote]
xuxinqiujiao123
2012-09-11
打赏
举报
回复
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main( )
{
//彩色3通道
Mat src(3,4,CV_8UC3);
//用来存储目的图片的矩阵
Mat res(3,4,CV_8UC3);
src = imread("1.jpg", 1 );
Mat r,g,b;
//多通道分成3个单通道
split(&src,&b,&g,&r);//在OpenCV中,一张3通道图像的一个像素点是按BGR的顺序存储的。
/*红:255,0,0(rgb)
0,240,120(hsv)
黑:0,0,0(RGB)
160,0,0
白:255,255,255
160,0,240*/
for(int i=0;i<b.rows;i++)
for(int j=0;j<b.cols;j++)
{
if(b.at<uchar>(i,j)<128)
b.at<uchar>(i,j)=0;
else
b.at<uchar>(i,j)=255;
}
for(int i=0;i<g.rows;i++)
for(int j=0;j<g.cols;j++)
{
if(g.at<uchar>(i,j)<128)
g.at<uchar>(i,j)=0;
else
g.at<uchar>(i,j)=255;
}
for(int i=0;i<r.rows;i++)
for(int j=0;j<r.cols;j++)
{
if(r.at<uchar>(i,j)<128)
r.at<uchar>(i,j)=0;
else
r.at<uchar>(i,j)=255;
}
src.reshape(36,0);
// 创建窗口显示图片
namedWindow( "src" );
namedWindow("result");
imwrite("jiashen.jpg",res);
imshow("src",src);
imshow("result",res);
waitKey();
return 0;
}
报错:
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1>正在编译...
1>图片.cpp
1>d:\backup\我的文档\visual studio 2008\projects\test\test\图片.cpp(15) : error C2661: “cv::split”: 没有重载函数接受 4 个参数
1>生成日志保存在“file://d:\Backup\我的文档\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm”
1>test - 1 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
[Quote=引用 2 楼 的回复:]
楼上的方法可以的,直接操作图像矩阵就可以了。。
这个我以前做过一个类似的,就是讲其中一种颜色加深,关键是设定阈值。
楼主贴下代码,帮你修改一下。。
[/Quote]
xuxinqiujiao123
2012-09-11
打赏
举报
回复
[Quote=引用楼主 的回复:]
有一幅图片是一份文件,我想让红色的文字更红,黑色的文字更黑,白色背景更白,请问应该怎么做呢?
我的OpenCV版本是2.1的,用的C++语言
[/Quote]
兄台,能写个代码不?之前都是二值化,黑白图,三个颜色就不懂了···
hackbuteer1
2012-09-10
打赏
举报
回复
楼上的方法可以的,直接操作图像矩阵就可以了。。
这个我以前做过一个类似的,就是讲其中一种颜色加深,关键是设定阈值。
楼主贴下代码,帮你修改一下。。
xmu_才盛
2012-09-09
打赏
举报
回复
扫描 整个图片的像素, 设定 红色, 黑色, 白色阈值。。。 如果像素值在这个阈值内,就认为是 什么颜色,, 浅点,灰色点 无所谓, 然后将该像素点 直接改成 全红, 全黑, 或者全白色。。。
opencv
比较
颜色
.zip
学习参考
OPENCV
基于
颜色
的跟踪算法
OPENCV
基于
颜色
的跟踪算法,获取
颜色
质心
颜色
增强算法
Opencv
opencv
实现图像
颜色
增强算法,vs2013+
opencv
2.4.13 实现。、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
Opencv
中
文帮助文档
opencv
帮助文档集,
opencv
参考手册,
opencv
官方文档,学习
OpenCV
中
文
利用基于vc6使用
opencv
库的
颜色
的特征提取
只要安装了vc6、
opencv
,并配置好环境变量就可使用,对
颜色
特征的提取,运行很流畅。
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章