图片的像素操作、添加文本

来源:互联网 发布:怎么联系网络推手 编辑:程序博客网 时间:2024/05/17 02:33

今天去一个公司交流,得知他们在做一个流水线上的检测装备,当时提出的要求是如何实现对一幅图片中的指定区域进行像素值的操作、如何在图片中添加文字,因为公司给的编码环境是vc,用起来很不习惯,晚上回来琢磨这件事,经过多处参考,大概实现了这个过程,把代码贴在下边。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/stitching/stitcher.hpp> 
using namespace std;
using namespace cv;
//代码的主要目的是实现对图片中的像素点操作、图片显示区域中添加文本
int main()
{
IplImage *orig=cvLoadImage("1.jpg");
cvNamedWindow("orig",0); cvShowImage("orig", orig);//显示原图
for (int i = 0; i < orig->height; i++)
{
for (int j = 0; j < orig->width/2; j++)//对原图的左半边像素减少20个灰度级
{
CvScalar p = cvGet2D(orig, i, j);//获取每个像素点的3个通道
p.val[0] = p.val[0] - 20;
p.val[1] = p.val[1] - 20;
p.val[2] = p.val[2] - 20;
cvSet2D(orig, i, j, p);//修正后的亮度重新赋予这个像素点
}
for (int j = orig->width/2; j < orig->width; j++)//对原图的右半边像素增加20个灰度级
{
CvScalar p = cvGet2D(orig, i, j);
p.val[0] = p.val[0] + 20;
p.val[1] = p.val[1] + 20;
p.val[2] = p.val[2] + 20;
cvSet2D(orig, i, j, p);
}
}
cvNamedWindow("adjust", 0); cvShowImage("adjust", orig);//显示左右边像素点操作后的图片
CvFont font;//用来保存文本字体的属性
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 3,3,1,2,8);
//在图片orig的[122,230]像素出显示黑色的"Hello World !",字体为font格式
cvPutText(orig, "Hello World !", cvPoint(122,230), &font, cvScalar(0, 0, 0));
cvNamedWindow("text", 0); cvShowImage("text", orig);
cvWaitKey(0);
return 0;
}





0 0
原创粉丝点击