Opencv改进型图片素描风(实时摄像头+Sobel边缘检测+三通道图片Mat上叠加另外一个单通道图片Mat)
来源:互联网 发布:淘宝lol卫衣 编辑:程序博客网 时间:2024/04/29 01:44
惯例效果图震楼
感觉物体比人看上去好看多了。。。摔!!
惯例opencv配置环境地址:http://blog.csdn.net/zmdsjtu/article/details/52235056
实现代码如下:
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> using namespace cv;void sumiao(Mat &image);int main() {VideoCapture cap(0);Mat frame;while (waitKey(30) != 27){cap >> frame;sumiao(frame);}}void sumiao(Mat &image) {Mat image2 = image.clone();cvtColor(image, image, CV_BGR2GRAY);//灰度图Mat sobel_x, sobel_y;Sobel(image, sobel_x, CV_16S, 1, 0); // SobelSobel(image, sobel_y, CV_16S, 0, 1);Mat sobel;sobel = abs(sobel_x) + abs(sobel_y);double sobmin, sobmax;minMaxLoc(sobel, &sobmin, &sobmax);Mat sobelImage;sobel.convertTo(sobelImage, CV_8U, -255.0 / sobmax, 255); int 倍数 = 2;cv::resize(sobelImage, sobelImage, Size(640/倍数, 480/倍数));for (int i = 0; i < sobelImage.rows; ++i) {for (int j = 0; j < sobelImage.cols; ++j) {image2.data[3*(j + i*image2.cols+image2.cols-sobelImage.cols)] = sobelImage.data[j + i*sobelImage.cols];image2.data[3 * (j + i*image2.cols + image2.cols - sobelImage.cols)+1] = sobelImage.data[j + i*sobelImage.cols];image2.data[3 * (j + i*image2.cols + image2.cols - sobelImage.cols)+2] = sobelImage.data[j + i*sobelImage.cols];}}imshow("素描图", image2);}
最后显示图片的时候在三通道的彩色图上叠加了单通道的灰度图,代码如下:
image2.data[3*(j + i*image2.cols+image2.cols-sobelImage.cols)] = sobelImage.data[j + i*sobelImage.cols];image2.data[3 * (j + i*image2.cols + image2.cols - sobelImage.cols)+1] = sobelImage.data[j + i*sobelImage.cols];image2.data[3 * (j + i*image2.cols + image2.cols - sobelImage.cols)+2] = sobelImage.data[j + i*sobelImage.cols];
三通道对应像素点直接都赋值为单通道的值就好
最后祝大家opencv使用愉快~
4 0
- Opencv改进型图片素描风(实时摄像头+Sobel边缘检测+三通道图片Mat上叠加另外一个单通道图片Mat)
- Opencv实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
- 【OpenCV】边缘检测、梯度计算 Sobel Mat
- 【OpenCV】将单通道的Mat对象转换为三通道的Mat
- OpenCV 绘制单通道图片的直方图
- opencv 绘制单通道图片的直方图
- mat opencv 保存图片
- cv::Mat三通道与单通道互相转换
- OpenCv调整图片(Mat)大小
- opencv mat 单通道图像获取 像素值
- Opencv310图片Mat中叠加汉字(freetype+VS2015)
- OpenCV Canny边缘检测输出写入一个单通道(灰度级)图像
- 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- OpenCV学习笔记之 ( 三 ) MFC显示Mat图片
- 在MFC图像控件上显示opencv Mat格式图片
- opencv Canny图片边缘检测
- opencv Mat 多通道c++ 操作方法(适用于Windows/Linux)
- ubuntu如何去除'Enter password to unlock your login keyring'提示框
- Android LocalBroadcastManager 注册广播和直接registerReceiver的区别
- 第三篇 Android kernel 动态编译的环境搭建
- JSP 单击退出系统按钮跳出整个Frame框架
- hadoop(三)命令测试
- Opencv改进型图片素描风(实时摄像头+Sobel边缘检测+三通道图片Mat上叠加另外一个单通道图片Mat)
- switch能否用String做参数?
- android学习之——紧急呼叫
- C语言实践(2016级第5周):编程思维启蒙
- javaweb思考笔记
- layer层CornerRadius影响shadow的实现
- java线程安全总结
- overide和overload的异同
- javascript控制 checkbox 全选/全不选