像素操作

#include<iostream>
#include<opencv2/opencv.hpp> using namespace std;
using namespace cv; int main(int argc, char**argv)
{
Mat src, src_gray;
src= imread("b.jpg");
if (src.empty())
{
cout << "could not load img.." << endl;
return -;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
/*
cvtColor(src, src_gray, CV_BGR2GRAY);
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", src_gray);
int height= src_gray.rows;
int width = src_gray.cols;
for (int row = 0; row < height; ++row)
{
for (int col = 0; col < width; ++col)
{
int gray = src_gray.at<uchar>(row, col);
src_gray.at<uchar>(row, col) = 255 - gray;
}
} imshow("output", src_gray);
*/
Mat dst;
dst.create(src.size(), src.type()); int height = src.rows;
int width = src.cols;
int chn = src.channels(); for(int row=;row<height;++row)
for (int col = ; col < width; ++col)
{
if (chn == )
{
int gray = src_gray.at<uchar>(row, col);
src_gray.at<uchar>(row, col) = - gray;
}
else if(chn==)
{
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[];
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[];
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[]; }
}
//bitwise_not(src, dst);
imshow("dst", dst);
waitKey();
return ;
}

直线,举行,圆形,椭圆的绘制与随机直线随机颜色的绘制

#include<iostream>
#include<opencv2/opencv.hpp> using namespace std;
using namespace cv; Mat src;
const char *drawdemo_win = "draw shapes and text demo";
void MyLines();
void MyRectangle();
void MyEclipse();
void MyCircle();
void MyPolygon();
void RandomLineDemo(); int main(int argc, char **argv)
{
src = imread("b.jpg");
if (src.empty())
{
cout << "Load image failed" << endl;
return -;
}
imshow("input image", src);
//MyLines();
//MyRectangle();
//MyEclipse();
//MyCircle();
//MyPolygon();
//MyPolygon();
//putText(src, "Hello OpenCV", Point(300, 300), CV_FONT_HERSHEY_COMPLEX, 1.0, Scalar(12, 255, 255), 3, 8);
RandomLineDemo();
imshow("draw", src);
waitKey(); return ;
} void MyLines()
{
Point p1 = Point(, );
Point p2;
p2.x = ;
p2.y = ;
Scalar color = Scalar(, , );
line(src, p1, p2, color, , LINE_AA);
} void MyRectangle()
{
Rect rect = Rect(, , , );
Scalar color = Scalar(, , );
rectangle(src, rect, color, , LINE_8);
} void MyEclipse()
{
Scalar color = Scalar(, , );
ellipse(src, Point(src.cols / , src.rows / ), Size(src.cols / , src.rows / ), , , , color, , LINE_8); } void MyCircle()
{
Scalar color = Scalar(,, );
Point center = Point(src.cols / , src.rows / );
circle(src, center, ,color, , );
} void MyPolygon()
{
Point pts[][];
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, ); const Point *ppts[] = { pts[] };
int npt[] = { }; Scalar color = Scalar(, , );
fillPoly(src, ppts, npt, , color, );
} void RandomLineDemo()
{
RNG rng();
Point pt1;
Point pt2;
Mat bg = Mat::zeros(src.size(), src.type());
namedWindow("Random Line Demo", CV_WINDOW_AUTOSIZE);
for(int i=;i<;++i)
{
pt1.x = rng.uniform(, src.cols);
pt2.x = rng.uniform(, src.cols);
pt1.y = rng.uniform(, src.rows);
pt2.y = rng.uniform(, src.rows);
Scalar color = Scalar(rng.uniform(, ), rng.uniform(, ), rng.uniform(, ));
if (waitKey() > )
break;
line(bg, pt1, pt2, color, , );
imshow("Random Line Demo", bg);
}
}

OpenCV像素操作和图形绘制的更多相关文章

  1. 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器

    1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...

  2. C# 操作Excel图形——绘制、读取、隐藏、删除图形

    简介 本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点: 1.绘制图形 1.1 绘制图形并添加文本到图形 1.2 添加图片到图形 1.3 设置图形阴影效果 1.4 设置图形透明度 ...

  3. 【opencv系列04】OpenCV4.X图形绘制

    一. 基本图形绘制 1. 基本函数与参数 cv2.line(): 线 cv2.circle(): 圆 cv2.rectangle(): 矩形 cv2.ellipse(): 椭圆 cv2.putText ...

  4. HTML5 canvas图像绘制方法与像素操作属性和方法

    图像绘制方法 drawImage()        向画布上绘制图像.画布或视频 像素操作属性和方法 width                                返回 ImageData ...

  5. Opencv中图像的遍历与像素操作

    Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...

  6. opencv中对图像的像素操作

    1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...

  7. python opencv:像素操作

    图片的像素 像素:组成图片的单位 RGB:颜色由 RGB三种颜色组成 颜色深度:对于8bit的颜色深度来说,它可以表示的颜色范围是 0 ~ 255,对于RGB图片来说,8位颜色深度可以表示 (2^8) ...

  8. OpenCV基础篇之像素操作对照度调节

    程序及分析 /* * FileName : contrast.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...

  9. 图形绘制 Canvas Paint Path 详解

    图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...

随机推荐

  1. Servlet中实现多个功能案例

    如何实现一个Servlet中的多个功能 前言:唉,打脸了,前脚刚说过要跟Servlet正式告别,后脚这不又来了,哈哈,总结出一点东西,纠结了一下还是做个分享吧,学习知识比面子重要,对吧,下回再也不约S ...

  2. SpringBoot2.x|Thymeleaf页面不能正常载入css、js文件

    1.实现实现WebMvcConfig配置类可以解决页面不能加载css,js的问题: 扩展SpringMvc,编写一个配置类(@Configuration),是WebMvcConfigurationAd ...

  3. python 排序 拓扑排序

    在计算机科学领域中,有向图的拓扑排序是其顶点的先行排序,对于每个从顶点u到顶点v的有向边uv,在排序的结果中u都在v之前. 如果图是有向无环图,则拓扑排序是可能的(为什么不说一定呢?) 任何DAG具有 ...

  4. mvc 返回json格式时间格式化

    protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEnco ...

  5. 微信小程序使用函数防抖解决重复点击消耗性能问题

    wxml: <view bindtap="doubleTap" bindtouchstart="touchStart" bindtouchend=&quo ...

  6. vue学习指南:第四篇(详细) - vue的 :class 和 :style

    1. :class = “a” 说明 vue 中有个叫 a 的属性 这个标签的class 就是 a的值 2. :class = “{ active:isactive }” Active的存在取决于 i ...

  7. X264-视频帧的存取

    X264的编码器结构体x264_t中的子结构体字段frames包含了4个临时视频帧序列空间:current.next.unused和reference,分别保存当前编码帧.将编码帧序列.未处理原始视频 ...

  8. Mysql时区无法识别

    Unable to connect to database. Tried 1 times {:error_message=>“Java::JavaSql::SQLException: The s ...

  9. SQL注入:盲注

    盲注简介 所谓的盲注就是在服务器没有错误回显的时候完成的注入攻击. 服务器没有错误回显,对于攻击者来说缺少了非常重要的"调试信息". 盲注分类 1.布尔盲注 布尔很明显Ture和F ...

  10. Redis缓存实战教程

    目录 Redis缓存 使用缓存Redis解决首页并发问题 1.缓存使用的简单设计 2.Redis的整合步骤 A 将Redis整合到项目中(Redis+Spring) B 设计一个数据存储策越 3.Re ...